以前,我会使用旧的命名约定,将预期为私有的字段命名为带有_
后缀或前缀。
class X{
constructor() {
this.privateField_;
}
privateMethod_() {}
}
现在使用 #
符号可以实现真正的私有访问权限,我已经开始使用它们了。
class X{
#privateField;
#privateMethod() {}
}
但是我遇到的一个情况是在调试时需要访问这些私有成员。但是当然,它们是私有的,所以除非我编写一些仅用于调试的包装器/访问器,否则我无法访问它们。如果我事先不知道需要调试哪些字段/类,这种方法就不实际了。使用下划线(_)命名约定,可以轻松绕过意图。
在使用Chrome开发者控制台时,是否有办法绕过私有修饰符,就像它允许您在async块之外使用await一样?
toString()
的覆盖方法,以便查看私有字段的值,当然你也可以定义公共方法或从公共方法调用它们并观察它们的效果(类似单元测试)。 - Heretic Monkey