如何在JavaScript中访问超类的私有成员?

时间:2019-04-26 10:13:36

标签: javascript oop private superclass ecmascript-next

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}`)

2 个答案:

答案 0 :(得分:3)

在OOP中,即使扩展,也无法访问类外部的private方法或属性。但是您可以在子类中访问父类的protected方法。

答案 1 :(得分:1)

它是impossible

  

这意味着私有字段纯粹是内部的:类之外的任何JS代码都无法检测或影响所述类实例的任何私有字段的存在,名称或值,而无需直接检查类的来源,除非该类选择揭示他们。 (这包括子类和超类。)

Base必须以其他方式(例如通过方法)故意暴露其#property