-2
在MDN中提到,如果我们不指定构造函数方法,则使用默认构造函数。Javascript中的默认构造函数
对于基类,默认的构造函数是:
constructor() {}
派生类的默认构造函数是:
constructor(...args) {
super(...args);
}
为什么派生类的默认构造函数具有其他参数(参数... args)基类默认构造函数没有?
在MDN中提到,如果我们不指定构造函数方法,则使用默认构造函数。Javascript中的默认构造函数
对于基类,默认的构造函数是:
constructor() {}
派生类的默认构造函数是:
constructor(...args) {
super(...args);
}
为什么派生类的默认构造函数具有其他参数(参数... args)基类默认构造函数没有?
在这种情况下,..args
显得多余,但您应该考虑基础对象不是Object
的情况。在这种情况下,使用参数调用超级构造函数是完全合理的。
因此,我们假设有A
和B
这几个类。 A
确实有一个明确定义的构造函数,B
没有,但A
是B
的超类。在这种情况下,如果您调用new B(myArg)
,则调用A
的constructor
是合理的。
超类构造函数的变量数量,它将参数传递给超类。 '......'意味着不同的数量。 – Li357
“为什么派生类的默认构造函数有其余参数(...参数)和基类的默认构造函数没有?” - 因为它们不会有影响? –
基类是Object.prototype,它的构造函数没有任何参数。 – DevZer0