先来看看在ES6之前是如何表示类的。
在ES6之前是没有类的概念,但是有近类结构,使用构造函数和原型链来模拟,如下:
function Animal(family,species) {
this.family = family;
this.species = species;
};
console.log(this.family);
}
let dog = Animal('dogs','four feet');
ES6中的类声明语法
class 类名{
constructor(参数1,参数2,...){
code:给类的属性赋值
}
fun1(){
code:类的方法
}
fun2(){
code:类的方法
}
}
var 类实例名=new 类名(参数1,参数2,...)
那么typeof 类名 会返回什么呢?
为什么一个类的类型会是function?
类声明仅仅是基于已有自定义类型声明的语法糖。
事实上,类声明实际上创建了一个具有构造函数方法行为的函数。而类声明中定义的方法,实际上是该类的prototype上的一个方法:
实际上类声明语法和ES6之前的近类结构是相似的,方法都在原型上。
类的继承
创建一个Point2D类
创建Point3D类并继承Point2D,核心关键字extends, super
这样的继承方式比使用function继承来的更为直接和方便。
最后测试:
这样使用super便实现了对父类方法的继承。
领取专属 10元无门槛券
私享最新 技术干货