class被babel编译以后,箭头函数会编译到构造函数
上,而普通方法会编译到原型对象
上;
所有实例共享prototype,而构造函数中的属性和方法每一个实例都会重新生成一个,所以为了节省内存,共享的方法一般写成普通方法形式
class Father {
constructor(state) {
this.state = state
}
arrowMethod = () => {}
generalMethod() {}
};
class Son extends Father {
constructor(state) {
super(state)
}
};
const instance1 = new Father();
const instance2 = new Father();
const instance3 = new Son();
instance1.arrowMethod === instance2.arrowMethod // false
instance1.generalMethod === instance2.generalMethod === instance3.generalMethod // true