类
概述
从功能上讲class更像是新引进的语法糖,而不是字面上理解的基于原型的新继承实现。
定义与实例化
示例
// 定义
class Greet {
// 构造函数
constructor (message) {
this.message = message;
}
greeting () {
console.log(this.message);
}
}
==== 代码说明 ====
* ES6中的class只包含方法,不包括属性
* constructor方法是class的默认方法,通过new命令生成实例时,会自动调用该方法
* 与ES5一样,类的所有实例共享一个原型对象
===== 类继承 =====
==== 示例 ====
<code>
class GreetWithName extends Greet {
constructor (message, name) {
super(message);
this.name = name;
}
greeting () {
console.log(this.message + " my name is " + this.name);
}
}
代码说明
- 使用关键之extends指明父类
- 使用super方法调用父类的方法
单实例与静态方法
class Greet {
constructor (message) {
if (!(this instanceof Greet)) {
return new Greet(message);
}
this.message = message;
}
static describe () {
console.log("just is a greeting for you!")
}
}
Greet.describe();
代码说明
- 通过在构造函数中返回实例的方法,实现单例模式
- 使用static关键字,声明静态方法