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

问题描述 投票:1回答:2

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}`)
javascript oop private superclass ecmascript-next
2个回答
1
投票

这是impossible

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

Base必须以某种其他方式故意暴露其#property,例如通过一种方法。


3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.