【发布时间】:2020-07-28 05:15:51
【问题描述】:
我想从派生类访问基类的私有字段而不将它们公开(在其他语言中称为“受保护”)。
考虑以下类:
class Animal {
#privateProp;
constructor() {
this.#privateProp = 12;
}
}
现在是扩展类:
class Cat extends Animal {
constructor() {
super();
}
doIt() {
console.log(this.#privateProp) // 1 below
console.log(super.#privateProp) // 2 below
}
}
我想像受保护一样执行:
new Cat().doIt();
但得到(分别):
- 未捕获的语法错误:必须在封闭类中声明私有字段“#privateProp”
- 未捕获的 SyntaxError:意外的私有字段
请注意,当 privateProp 公开时,此代码将完美运行,但我想实现类似受保护的行为并像任何支持继承的语言一样访问“私有”字段。
任何帮助将不胜感激。
【问题讨论】:
-
Umm ..“private”实际上是私有的,所以不能在课堂外访问。
-
私有字段是私有的是有原因的 :)
-
好吧对不起,让我把它改成“受保护”
-
看看这个以更好地理解stackoverflow.com/questions/34517581/…
-
所以看完之后,我想在JS中还没有直接的方法来实现这种行为。
标签: javascript private ecmascript-next class-fields