JavaScript:为什么super()不是';子类构造函数中的JS引擎是否自动调用?
在JavaScript ES6中,如果在访问JavaScript:为什么super()不是';子类构造函数中的JS引擎是否自动调用?,javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,在JavaScript ES6中,如果在访问this之前必须在子类构造函数中调用super(),为什么JS引擎不能自动调用它 让我举个例子: class Animal { constructor (name) { this.name = name; } } class Dog extends Animal { constructor (name, breed) { super(); this.breed = breed; } } 难道不是这样吗 cla
this
之前必须在子类构造函数中调用super()
,为什么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中构建来自动化这个过程呢?为什么每次都要键入
super()
?是否存在一个特定的语言设计约束,否则会破坏一切?这是因为基本构造函数可能包含参数,在这种情况下,您必须调用super()
以您喜欢的方式传递它们
除此之外,只要考虑纯OOP,可能会有各种各样的基础构造函数,它们具有不同的签名,这些签名将在您的控制之下。自动化这个过程是不现实的。这是因为基本构造函数可能包含参数,在这种情况下,您必须调用
super()
以您喜欢的方式传递它们
除此之外,只要考虑纯OOP,可能会有各种各样的基础构造函数,它们具有不同的签名,这些签名将在您的控制之下。自动化这个过程是不现实的。重复的内容来自这个谷歌搜索:这个搜索的谷歌结果并不能回答眼前的问题。奇怪的是,我不知道我是否发布了一个指向其他搜索的链接。不管怎么说,我是用谷歌找到的。谢谢,我想这也许可以解释这一点,以前找不到:重复项来自谷歌搜索:谷歌搜索的结果并没有回答眼前的问题。奇怪的是,我不知道我是否发布了指向其他搜索的链接。不管怎样,我用谷歌找到了这些复制品。谢谢,我想这可以解释这一点,以前找不到: