系列
JavaScript教程
基于class关键字创建类
2018-03-03大约3分钟
ES6新增加了class
关键字,自此,再也不用听"原型"、"prototype"、"原型链"之类折磨人的词了,简单、轻松学会创建类,而不用纠结复杂深奥的语法,何乐而不为?
本章介绍的内容,IE浏览器不支持,若代码运行出错或无响应,请尝试换用先进的浏览器。
构造函数
用class
关键字来创建一个类的时候,可以用constructor
这个特殊的方法来创建和初始化一个用这个类创建的对象。
class Dog {
constructor(type, color) { // 定义构造函数,构造函数名始终是constructor
this.type = type;
this.color = color;
}
getInfo() { // 定义类的方法,可以用this访问类的其它属性
return `${this.color}${this.type}狗`;
};
}
const dog = new Dog("牧羊犬", "白色");
console.log(dog.getInfo());
相比通过function来定义类,是不是简洁明了许多?
继承
继承一个父类的时候,用extends
关键字就可以,也可以使用super
关键字来访问父类的属性和方法:
/*
定义Dog作为父类
*/
class Dog {
constructor(type, color) {
this.type = type;
this.color = color;
}
getInfo() {
return `${this.color}${this.type}狗`;
}
}
/*
定义子类
*/
// 使用extends关键字继承Dog类
class ShepherdDog extends Dog {
constructor(color, weight) {
// 调用父类的构造函数。super()函数是父类的构造函数,根据父类的构造函数的参数情况来决定如何传递参数
super("牧羊犬", color);
this.weight = weight;
}
getInfo() {
return `${super.getInfo()},${this.weight}公斤`;
}
}
/*
使用子类
*/
const dog = new ShepherdDog("白色", 10);
console.log(dog.getInfo());
需要注意的是,继承一个类的时候,子类的constructor
构造函数里面一定要调用父类的构造函数super
,并且一定要在任何使用this
的语句之前和return
语句之前使用,否则运行时就会出错。