你能在 ES6 的扩展 class 中使用不同的构造函数参数吗?
Can you use different constructor arguments in an extended class in ES6?
当我使用具有不同参数的构造函数时,我在 Visual Studio 代码中收到警告。 extended classes 中的参数是否需要与 super class 相同?
Class:
class Options {
constructor(name = null) {
this.name = name;
}
}
class ExtendedClass extends Options {
constructor(colors = null, option = false) {
if (colors!=null) {
this.numberOfColors = colors;
}
this.option = option;
}
}
更新:
看起来使用不同的参数并不重要,但问题是对 super 的调用是问题所在?需要进行更多测试,但看起来这就是问题所在:
class ExtendedClass extends Options {
constructor(colors = null, option = false) {
super();
if (colors!=null) {
this.numberOfColors = colors;
}
this.option = option;
}
}
Do the arguments in extended classes [constructors] need to be the same as the super class [constructor]?
简答:没有。
但是,super()
需要与超级 class 构造函数相同的参数。 (super()
使用提供的参数调用超级 class 构造函数。)
当我使用具有不同参数的构造函数时,我在 Visual Studio 代码中收到警告。 extended classes 中的参数是否需要与 super class 相同?
Class:
class Options {
constructor(name = null) {
this.name = name;
}
}
class ExtendedClass extends Options {
constructor(colors = null, option = false) {
if (colors!=null) {
this.numberOfColors = colors;
}
this.option = option;
}
}
更新:
看起来使用不同的参数并不重要,但问题是对 super 的调用是问题所在?需要进行更多测试,但看起来这就是问题所在:
class ExtendedClass extends Options {
constructor(colors = null, option = false) {
super();
if (colors!=null) {
this.numberOfColors = colors;
}
this.option = option;
}
}
Do the arguments in extended classes [constructors] need to be the same as the super class [constructor]?
简答:没有。
但是,super()
需要与超级 class 构造函数相同的参数。 (super()
使用提供的参数调用超级 class 构造函数。)