如何解决JS 语义:为什么私有和公共类属性似乎被重新排序?
下面的屏幕截图显示了 new A()
的值,但其属性已重新排序。
这有什么好的理由吗?
代码
class A {
constructor() { }
#private1 = 1;
public1 = 11;
#private2 = 2;
public2 = 22;
}
new A();
结果:
解决方法
私有成员不是普通属性(以字符串或符号为键),它们不共享可以任意穿插的顺序。
实际上,私有成员根本不可枚举,因此您永远不能以任何顺序列出它们。没有 JS 功能可以做到这一点。
开发工具(使用调试器 API 访问对象)显然选择首先列出对象的属性,然后是对象的私有字段,按照定义的顺序。请注意,这可能会随时更改,您不应认为它有任何意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。