Javascript中的默认构造函数
在MDN中,提到如果不指定构造函数方法,则使用默认构造函数 对于基类,默认构造函数是:Javascript中的默认构造函数,javascript,ecmascript-6,Javascript,Ecmascript 6,在MDN中,提到如果不指定构造函数方法,则使用默认构造函数 对于基类,默认构造函数是: constructor() {} constructor(...args) { super(...args); } 对于派生类,默认构造函数是: constructor() {} constructor(...args) { super(...args); } 为什么派生类默认构造函数有rest参数(…args),而基类默认构造函数没有rest参数 >在精确的情况下, .ARGs似乎是多余的,
constructor() {}
constructor(...args) {
super(...args);
}
对于派生类,默认构造函数是:
constructor() {}
constructor(...args) {
super(...args);
}
为什么派生类默认构造函数有rest参数(…args),而基类默认构造函数没有rest参数 >在精确的情况下,<代码> .ARGs<代码>似乎是多余的,但是当基本对象不是代码>对象< /代码>时,你应该考虑这个情况。在这种情况下,使用参数调用超级构造函数是完全合理的
那么,让我们假设有类
A
和B
A
确实有一个明确定义的构造函数,B
没有,但是A
是B
的超类。在这种情况下,如果调用<代码>新B(MyARG),调用<代码> >构造函数< /C> >代码> A/<代码> < P>是合乎逻辑的。在这种精确的情况下,<>代码> ARGs<代码>似乎是多余的,但是当基本对象不是代码>对象< /代码>时,您应该考虑这种情况。在这种情况下,使用参数调用超级构造函数是完全合理的
那么,让我们假设有类
A
和B
A
确实有一个明确定义的构造函数,B
没有,但是A
是B
的超类。在这种情况下,如果调用new B(myArg)
,则调用A
的构造函数的是合乎逻辑的,它会将参数传递给super..
表示不同的数量。“为什么派生类默认构造函数有rest参数(…args),而基类默认构造函数没有rest参数?”-因为它们无论如何都不会有任何影响?基类是对象。原型和它的构造函数不带任何参数。这似乎是要问MDN帖子的作者的问题,而不是堆栈溢出默认构造函数是noop。如果父类有noop或op构造函数,那么子类就不必担心了,它们应该只是为了安全起见..
表示不同的数量。“为什么派生类默认构造函数有rest参数(…args),而基类默认构造函数没有rest参数?”-因为它们无论如何都不会有任何影响?基类是对象。原型和它的构造函数不带任何参数。这似乎是要问MDN帖子的作者的问题,而不是堆栈溢出默认构造函数是noop。若父类有noop或op构造函数,那个么子类就不必担心了,它们应该只是为了安全起见。