我正在研究ES6,因为它在编写reactJS应用程序时似乎得到了提升。我对构造函数的工作方式感到有些惊讶:
class Human{
constructor(name){
this.name = name;
}
toString(){
return "Name = " + this.name;
}
}
class Person extends Human{}
var person = new Person("kim");
使用基于类的系统在JS中编写前端应用程序时,以下其中一项可能会使我的应用程序变得脆弱:
可选问题:
我遇到的第二个问题是,如今对于大型生产应用程序使用ES6的决策有多聪明,以及现在只使用ES6进行实验是否有用。我不确定是否错误地认为JS正在倾向于像Java一样完全成熟的基于类的系统,并且事情可能会比我的代码库能够消化更快(渐进)。
答案 0 :(得分:6)
参数化构造函数是隐式继承的 - 这总体上是一个好主意,它会保持这样的机会是什么?
是的,它会保持这样。如果您没有提供构造函数,则默认情况下使用所有参数调用父构造函数。
这是一个好主意,因为class
确实要求你在构造函数中调用super()
(这至少对于继承构建是必要的,并且无论如何都是一个好的做法)。如果没有默认构造函数,则必须自己明确地提供它,这会导致样板代码增加(class
关键字的目标是避免这种情况)。
在同一个类中重载构造函数的残障;基于参数类型的过载能力
没有。当然,在JS中,你不能有一个类的多个构造函数,但是you can still overload it,它们都包含传递参数的数量及其类型。
ES6准备就绪?
是。该标准被采用,没有更多的实验。 Transpilers确实支持所有主要的有用语法功能。
我不确定是否认为JS正在倾向于像Java这样完整的基于类的系统
是的,那是错误的。 JS没有类似Java的类系统,也几乎没有。另请参阅Will JavaScript ever become a 'proper' class based language?。