【发布时间】:2022-01-20 11:32:42
【问题描述】:
我有多个具有相同父类的类实例。对于特定情况,需要更新父类属性,以便子类的所有可用实例都可以访问更新后的属性。
如果类属性不存在,我可以通过prototype 访问它:
class Foo {
someVal = 'Hello'
}
class Bar extends Foo {
}
let inst = new Bar()
Foo.prototype.someNewValue = 'Hello World'
console.log(inst.someNewValue) //Hello World
但在我的情况下,我需要更新一个已经存在的属性:
class Foo {
someVal = 'Hello'
}
class Bar extends Foo {
}
let inst = new Bar()
Foo.prototype.someVal= 'Hello World'
console.log(inst.someVal) //Still output "Hello" because existing property value has a more priority than a value from prototype. While "Hello World" is desirable
【问题讨论】:
-
我认为类字段
someVal在原型上不存在,而是在构造函数中定义。 -
您所描述的不是实例变量或属性。它是一个类静态属性(一个可用于所有实例的值)。听起来您应该将属性更改为静态类,并更改访问它的方式以引用静态类。类实例属性对于类的每个实例都是唯一的,因此具有独立的值。
-
@jfriend00 谢谢。通过一些代码修改,它解决了我的要求。