javascript - JS 语义:为什么私有和公共类属性似乎被重新排序?
问题描述
下面的屏幕截图显示了 的值new A()
,但其属性已重新排序。
这有什么好的理由吗?
代码
class A {
constructor() { }
#private1 = 1;
public1 = 11;
#private2 = 2;
public2 = 22;
}
new A();
结果:
解决方案
私有成员不是普通属性(用字符串或符号作为键),它们不共享可以任意穿插的顺序。
事实上,私有成员根本不是可枚举的,所以你永远不能以任何顺序列出它们。没有 JS 功能可以做到这一点。
devtools(使用调试器 API 访问对象)显然选择首先列出对象的属性,然后按定义的顺序列出对象的私有字段。请注意,这可能随时发生变化,您不应认为它具有任何意义。
推荐阅读
- php - PHP将数组格式(如first_name)更改为名字
- reactjs - 为单个组件实现 redux 好吗?
- javascript - 从类方法调用发射时的不同行为
- javascript - 无法读取未定义的属性“消息处理程序”
- ios - 如何使用 swift 4.2 在 viewDidload 和 Search 选项中按名称字段执行可编码值?
- hibernate - 为什么 List 类型的 spring data 参数不像其他参数类型那样打印在日志上?
- c++ - 是否有 Linux 等效的 SetupDiGetClassDevs 函数
- java - 休眠一对多将两个外键映射到同一列?
- postgresql - 无法使用 Postgres 数据库配置 hashcorp-vault
- java - Actionbar.removealltabs() 留下标签空间