gpt4 book ai didi

javascript - JS ECMAScript 6 中是否继承了构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:47 25 4
gpt4 key购买 nike

我有示例类:

class Something{
constructor(x, y){
this.x = x;
this.y = y;
}

//...
}

当我创建这样的继承类时:

class Dog extends Something{
constructor(name){
this.name = name;
}

//...
}

Dog 的构造函数会像这样吗?

constructor(x, y, name){
this.x = x;
this.y = y;
this.name = name;
}

如果不是,是否可以让它像这样工作^?

最佳答案

Is constructor inherited in JS ECMAScript 6?

不是真的,不是。但是,如果您根本不提供构造函数,JavaScript 引擎会提供一个默认值,其作用有点像继承的构造函数。1(与您的示例无关,您已经在 。)

Will Dog's class look like this?

没有。因为您已经在 Dog 中定义了构造函数,所以 JavaScript 引擎不会为您做任何事情;由你来定义 Dog 的构造函数并让它通过 super 调用 Something(你不能使用 this 直到你调用 super)。

你的 Dog 构造函数需要接受 xy,或者硬编码它自己的(或者从它得到的参数派生它们) ):

接受他们:

class Dog extends Something{
constructor(name, x, y) {
super(x, y);
this.name = name;
}

//...
}

硬编码:

// Accepting them:
class Dog extends Something{
constructor(name) {
super(42, 57);
this.name = name;
}

//...
}

(或者当然,只接受 xy 并硬编码/派生另一个。)


1 如果您根本不提供constructor,JavaScript 引擎adds one for you .

对于基类,它看起来像这样:

constructor() {
}

对于派生类,它看起来像这样:

constructor(...args) {
super(...args);
}

后一个就是为什么我说它有点像继承构造函数的原因,因为与 Java 或 C# 等语言的默认构造函数不接受任何参数并调用 super 不带参数不同,JavaScript 的默认传递通过它收到的所有参数。

关于javascript - JS ECMAScript 6 中是否继承了构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40991627/

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