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 访问对象)显然选择首先列出对象的属性,然后是对象的私有字段,按照它们被定义的顺序。请注意,这可能随时发生变化,您不应赋予它任何意义。