类
概述
从功能上讲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关键字,声明静态方法