我希望在课堂上B
我可以阅读 private fields#a
和#x
of class A
。但实际上我只能读取#a
,万一访问#x
我得到一个错误:
无法从类未声明的对象中读取私有成员 #x
看起来像#x
类B
阴影类似的领域A
。首先,这似乎不合逻辑-为什么它会以这种方式工作,如果是故意的,那么它是以这种方式计划的吗?是否可以#x
在A
实例内部读取B
?
class A {
#a = "A#a"
#x = "A#x"
static B = class B {
#b = "B#b"
#x = "B#x"
static doSmth(obj) {
try { console.log(obj.#a) } catch (e) { console.log(e.message) }
try { console.log(obj.#b) } catch (e) { console.log(e.message) }
try { console.log(obj.#x) } catch (e) { console.log(e.message) }
}
}
}
console.log("=== A ===")
A.B.doSmth(new A)
console.log("")
console.log("=== B ===")
A.B.doSmth(new A.B)
.as-console-wrapper.as-console-wrapper { max-height: 100vh }
.as-console-row.as-console-row:after { content: none }
如果重要的话,我正在使用 Google Chrome 89.0.4389.90。
PS:同样的问题在俄语中。