JavaScript-ES6中的class及继承
我们知道,ES6中,引入了class这个关键字,让在JavaScript中定义类更加简单了
在介绍ES6中的class之前,我们先来看一下JavaScript之前类的实现,在此之前,JavaScript基本是使用原型prototype来实现类的
现在ES6中有了新的class关键字,我们来看看使用class关键字如何来写这个代码
我们可以看到以下几点区别
1. 使用了class关键字,和c#中使用方法类似,便于个人理解了
2. class中有了构造函数,构造函数使用constructor关键字来进行
3. 在class中定义了hello方法,直接采用hello()的写法,没有使用function关键字。也就是说,在class中定义方法,不再需要使用function关键字了
好了,定义了class之后,我们想创建一个这个class(employee)的对象,代码就和c#中很类似了
好了,我们知道了怎么使用ES6中的class关键字来创建一个类,如何来创建这个类的一个对象。 那么如何来实现它的继承呢,我们来看一下
这里,我们可以看到一点
1. 使用extends关键字来实现继承, 它的构造函数constructor中,使用了super关键字来来实现它的父类的构造函数
那么,我们可能会想,如果这个类不单单要实现父类的构造函数, 在自己的构造函数中,也想传入自己特有的参数。我们知道,这种情况在程序代码中是经常出现的,我们来看看
这里,我们可以看到
1. 子类KeyEmployee也是用class关键字来实现,通过extends关键字来实现继承
2. 子类的构造函数同样需要constructor关键字,它可以和父类一样(比如和父类一样,只有name一个参数,通过super(name)来调用父类的构造函数),也可以和父类不一样(比如有name和level两个参数)。 但无论是否 一样,它都需要通过super()来实现父类的构造函数
3. 子类会自动获得父类中的方法,也就是说 KeyEmployee自动有了Employee中的hello()方法