JS 语义:为什么私有和公共类属性似乎被重新排序?

问题描述

下面的屏幕截图显示new A() 的值,但其属性已重新排序。

这有什么好的理由吗?

代码

class A {
  constructor() { }
  #private1 = 1;
  public1 = 11;

  #private2 = 2;
  public2 = 22;
}

new A();

结果:

enter image description here

解决方法

私有成员不是普通属性(以字符串或符号为键),它们不共享可以任意穿插的顺序。

实际上,私有成员根本不可枚举,因此您永远不能以任何顺序列出它们。没有 JS 功能可以做到这一点。

开发工具(使用调试器 API 访问对象)显然选择首先列出对象的属性,然后是对象的私有字段,按照定义的顺序。请注意,这可能会随时更改,您不应认为它有任何意义。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...