在JavaScript ES6中,如果在访问super()
之前必须始终在子类构造函数中调用this
,为什么JS引擎不会自动调用它?
请举个例子:
class Animal {
constructor (name) {
this.name = name;
}
}
class Dog extends Animal {
constructor (name, breed) {
super();
this.breed = breed;
}
}
难道不是吗?
class Dog extends Animal {
constructor (name, breed) {
this.breed = breed;
}
}
我的意思是,我知道第二个示例不起作用,但为什么JS中没有构建此功能来自动化该过程?为什么我们每次都要输入{{1}}?是否存在特定的语言设计约束,否则会破坏事物?
答案 0 :(得分:2)
那是因为基础构造函数可能包含参数,在这种情况下,您必须按照自己喜欢的方式调用super()
。
除此之外,只考虑纯OOP,可能会有各种基本构造函数具有不同的签名,这些构造函数将由您控制。自动化这个过程是不切实际的。