javascript 继承值覆盖getter

dkqlctbz  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(96)

我在上课时发现了这个奇怪的行为:

class A {
  test = 1
}

class B extends A {
  get test () {
    return 2
  }
}

const b = new B()

console.log(b.test)

输出的逻辑答案应该是2,但在运行代码时,输出是1
我错过了什么吗?这是JavaScript的预期行为吗?我在MDN文档中找不到任何关于这方面的内容。
我发现this question可能与我的有关,但它不包括任何变通办法。

p1iqtdky

p1iqtdky1#

您必须在B中重新定义test的值。

class A {
  test = 1
}

class B extends A {
  test = 2 // redefine
}

const b = new B()

console.log(b.test) // 2

如果您检查 MDN -引用- JavaScript -函数- getter,您会发现这是不可能的。

* 描述 *

...

  • 使用get语法时请注意以下事项:*

...

    • 不得与相同属性的数据条目一起出现,例如,禁止以下内容 *
{
  x: /* … */, get x() { /* … */ }
}

相关问题