ES5实现一个类的方式是使用函数,以及函数的3个内部对象:this、prototype、new.target,如:
实例成员定义在构造函数内部,是每个实例各自维护的内容,格式为:
this.a = 1;
this.fn = function(){}
原型成员定义在原型上,是每个实例共享的内容,格式为:
Fn.prototype.b = 2;
Fn.prototype.fn1 = function() {};
用这种方法定义一个类未免会让代码显得过于零散,好在ES6给我们提供了一套class语法糖。
class Animal {
constructor(name, age) {
// 实例成员
this.name = name;
this.age = age;
this.say = () => console.log(`name: ${name}, age: ${age}`);
}
// 原型方法
toString() {
return `name: ${name}, age: ${age}`;
}
}
// 原型变量
Animal.weight = 1000;
Animal.prototype.height = 120;