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}`)
这是impossible:
这意味着私有字段纯粹是内部的:除非类选择显示它们,否则类之外的JS代码不会检测或影响所述类的任何私有字段实例的存在,名称或值,而无需直接检查类的来源。 。 (这包括子类和超类。)
Base
必须以某种其他方式故意暴露其#property
,例如通过一种方法。
在OOP中,即使扩展,也无法访问类外的private
方法或属性。但是您可以在子类中访问父类的protected
方法。