ES6构造函数继承

Tra*_*ace 4 javascript ecmascript-6

我正在研究ES6,因为它在编写reactJS应用程序时似乎得到了提升.我对构造函数的工作方式感到有些惊讶:

class Human{ 
    constructor(name){ 
        this.name = name;
    }
    toString(){ 
        return "Name = " + this.name; 
    } 
}

class Person extends Human{} 

var person = new Person("kim"); 
Run Code Online (Sandbox Code Playgroud)

使用基于类的系统在JS中编写前端应用程序时,以下其中一项可能会使我的应用程序变得脆弱:

  • 参数化的构造函数是隐式继承的(总体来说这是一个好主意,它将保持这样的机会是什么?);
  • 在同一个类中重载构造函数的残障;
  • 基于参数类型的过载能力;

可选问题:
遇到的第二个问题是,如今将ES6用于大型生产应用程序的决策有多聪明,以及现在只使用ES6进行实验是否有用.我不确定是否错误地认为JS正在倾向于像Java一样完全成熟的基于类的系统,并且事情可能会比我的代码库能够消化更快(渐进).

Ber*_*rgi 6

参数化构造函数是隐式继承的 - 这总体上是一个好主意,它会保持这样的机会是什么?

是的,它会保持这样.如果您没有提供构造函数,则默认情况下使用所有参数调用父构造函数.

这是一个好主意,因为class你必须super()在构造函数中调用(这至少对于继承构建是必要的,并且无论如何都是一种好的做法).如果没有默认构造函数,则必须自己明确地提供它,这会导致样板代码的增加(并且class关键字的目标是避免这种情况).

在同一个类中重载构造函数的残障; 基于参数类型的过载残疾

当然,在JS中,你不能有一个类的多个构造函数,但你仍然可以重载它,包括传递的参数数量和它们的类型.

ES6生产准备好了吗?

是.该标准被采用,没有更多的实验.Transpilers确实支持所有主要的有用语法功能.

我不确定是否认为JS倾向于像Java一样完整的基于类的系统是错误的

是的,这是错位的.JS没有类似Java的类系统,也几乎没有.另请参阅JavaScript是否会成为一种"适当的"基于类的语言?.