JavaScript 语言中,生成实例对象的传统方法是通过构造函数。
function Animal(name, age) { this.name = name; this.age = age; } Animal.prototype.showName = function () { console.log(this.name); console.log(this.age); } var a = new Animal('小黑', 2); a.showName();
ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class
关键字,可以定义类。
基本上,ES6 的class
可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class
写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的class
改写,就是下面这样
class Animal { // 构造器 当你创建实例之后 constructor()方法会立刻调用 通常这个方法初始化对象的属性 constructor(name, age) { this.name = name; this.age = age; } showName() { console.log(this.name); console.log(this.age); } } var a2 = new Animal('小黑', 2); a2.showName();
constructor方法是类的默认方法,通过new
命令生成对象实例时,自动调用该方法。一个类必须有constructor
方法,如果没有显式定义,一个空的constructor
方法会被默认添加。
class Animal { } // 等同于 class Animal { constructor() {} }