gpt4 book ai didi

JavaScript:为什么 JS 引擎不会在子类构造函数中自动调用 super()?

转载 作者:行者123 更新时间:2023-12-01 03:50:46 24 4
gpt4 key购买 nike

在 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 中构建此功能来自动化该过程?为什么我们必须输入 super()每一次?是否存在特定的语言设计约束,否则会破坏事物?

最佳答案

这是因为基本构造函数可能包含参数,在这种情况下,您必须调用 super() 以您喜欢的方式传递它们。

除此之外,仅考虑纯 OOP,可能存在具有不同签名的各种基本构造函数,这些构造函数将在您的控制之下。自动化这个过程是不切实际的。

关于JavaScript:为什么 JS 引擎不会在子类构造函数中自动调用 super()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43230427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com