JS 语义:为什么 private 和 public class 属性似乎被重新排序了?
JS semantics: Why do private and public class properties seem to get reordered?
下面的屏幕截图显示了 new A()
的值,但其属性已重新排序。
这有什么好的理由吗?
代码
class A {
constructor() { }
#private1 = 1;
public1 = 11;
#private2 = 2;
public2 = 22;
}
new A();
结果:
私有成员不是普通属性(以字符串或符号为键),它们不共享可以任意散布的顺序。
事实上,私有成员根本不可枚举,因此您永远不能以任何顺序列出它们。只是没有 JS 功能可以做到这一点。
devtools(使用调试器 API 访问对象)显然选择首先列出对象的属性,然后是对象的私有字段,按照它们被定义的顺序。请注意,这可能随时发生变化,您不应赋予它任何意义。
下面的屏幕截图显示了 new A()
的值,但其属性已重新排序。
这有什么好的理由吗?
代码
class A {
constructor() { }
#private1 = 1;
public1 = 11;
#private2 = 2;
public2 = 22;
}
new A();
结果:
私有成员不是普通属性(以字符串或符号为键),它们不共享可以任意散布的顺序。
事实上,私有成员根本不可枚举,因此您永远不能以任何顺序列出它们。只是没有 JS 功能可以做到这一点。
devtools(使用调试器 API 访问对象)显然选择首先列出对象的属性,然后是对象的私有字段,按照它们被定义的顺序。请注意,这可能随时发生变化,您不应赋予它任何意义。