Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:为什么super()不是';子类构造函数中的JS引擎是否自动调用?_Javascript_Class_Ecmascript 6 - Fatal编程技术网

JavaScript:为什么super()不是';子类构造函数中的JS引擎是否自动调用?

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

在JavaScript ES6中,如果在访问
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,可能会有各种各样的基础构造函数,它们具有不同的签名,这些签名将在您的控制之下。自动化这个过程是不现实的。

重复的内容来自这个谷歌搜索:这个搜索的谷歌结果并不能回答眼前的问题。奇怪的是,我不知道我是否发布了一个指向其他搜索的链接。不管怎么说,我是用谷歌找到的。谢谢,我想这也许可以解释这一点,以前找不到:重复项来自谷歌搜索:谷歌搜索的结果并没有回答眼前的问题。奇怪的是,我不知道我是否发布了指向其他搜索的链接。不管怎样,我用谷歌找到了这些复制品。谢谢,我想这可以解释这一点,以前找不到: