ES5的解释
- 在new一个实例之后,他的实例可以调用构造函数和prototype上面的方法。
- 但是不同的是,定义在构造函数里面的方法,会在每一个实例里面创建一个函数,占用空间。每个实例的test方法指向不同内存。而prototype中的方法,只占用一块内存,所有实例指向他,节约空间。
function Cat(x,y) {
this.test1 = () => {
console.log("我是1");
}
}
Cat.prototype.test2 = () => {
console.log("我是2");
}
var car = new Cat()
console.log(car.test1());
console.log(car.test2());
console.log(car1.test1 == car.test1);
- 构造函数里面的方法,重写之后不会改变其他实例。而定义在prototype上,所有实例共享这个方法,所以改变prototype的方法之后,所有实例的方法都改变了。
function Cat(x,y) {
this.test1 = () => {
console.log("我是1");
}
}
var car = new Cat()
var car1 = new Cat()
car1.test1 = ()=>{
console.log("我才不是1呢");
}
console.log(car.test1());
console.log(car1.test1());