2016-08-01 125 views
-2

在MDN中提到,如果我们不指定构造函数方法,则使用默认构造函数。Javascript中的默认构造函数

对于基类,默认的构造函数是:

constructor() {} 

派生类的默认构造函数是:

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

为什么派生类的默认构造函数具有其他参数(参数... args)基类默认构造函数没有?

+1

超类构造函数的变量数量,它将参数传递给超类。 '......'意味着不同的数量。 – Li357

+0

“为什么派生类的默认构造函数有其余参数(...参数)和基类的默认构造函数没有?” - 因为它们不会有影响? –

+0

基类是Object.prototype,它的构造函数没有任何参数。 – DevZer0

回答

0

在这种情况下,..args显得多余,但您应该考虑基础对象不是Object的情况。在这种情况下,使用参数调用超级构造函数是完全合理的。

因此,我们假设有AB这几个类。 A确实有一个明确定义的构造函数,B没有,但AB的超类。在这种情况下,如果您调用new B(myArg),则调用Aconstructor是合理的。