【发布时间】:2021-01-16 09:07:08
【问题描述】:
我在 JS 中使用子类覆盖类属性时遇到了这个问题。我认为 OOP 中的行为是我想要的,但我希望在 JS 中实现同样的效果。
class Base {
constructor () {
console.log(this.a)
}
}
class Child extends Base {
a = 1
}
new Child()
// undefined, but I expect (want) 1
如何修改我的代码以记录1?
Python 中的示例,有效:
class Base:
def __init__(self):
print(self.a)
class Child(Base):
a = 1
Child()
# 1 -> desirable
【问题讨论】:
-
可能找到了一个很好的答案javascript.info/…
-
这是时间问题。您不能在声明之前访问属性,这就是您得到
undefined的原因。而且您不能更改执行顺序,因为在调用super()之前,您无法在派生构造函数中访问this。因此,要解决这个问题,您需要更具体地说明您想要在基类中做什么,以找到合适的解决方法。
标签: javascript typescript class oop inheritance