在class
中,如何访问其基类的私有字段,例如#property
?
class Base {
#property = '1.618'
toString() {
return Base.name
}
}
class X extends Base {
thisWorks() {
return super.toString()
}
toString() {
return super.#property // SyntaxError: Unexpected private field
}
}
console.log(`${new X}`)
答案 0 :(得分:3)
在OOP中,即使扩展,也无法访问类外部的private
方法或属性。但是您可以在子类中访问父类的protected
方法。
答案 1 :(得分:1)
它是impossible:
这意味着私有字段纯粹是内部的:类之外的任何JS代码都无法检测或影响所述类实例的任何私有字段的存在,名称或值,而无需直接检查类的来源,除非该类选择揭示他们。 (这包括子类和超类。)
Base
必须以其他方式(例如通过方法)故意暴露其#property
。