function car(brand,money){
this.brand = brand;
this.money = money;
this.info = function(){
return this.brand + '要卖' + this.money;
}
}为什么说info每次new的时候需要重新定义,而放在car.prototype.info的时候就可以在实例之间共享请给我详细解释下,我大概知道一些
1 回答
两年3900165
TA贡献2条经验 获得超1个赞
1.因为car.prototype指向一个对象,如果你将info扔到car.prototype上的话相当于给这个对象添加了一个info函数。
2.然后你new一个car相当于创建一个空的对象,然后将这个对象的proto属性设置为指向car.prototype,实例.__proto__ ===car.prototype
3.当你调用实例.info的时候,他会在自身里面先找有没有info函数,没有的话就到实例.__proto__里面找,还找不到就到实例.__proto__.__proto__里面找,一直找到Object.prototype上面看有没有为止。
4.如果你将info扔到car.prototype上,那么以后通过这个函数new出来的实例所调用的info函数都是同一个函数,但是不放在car.prototype上的话,每次你new出来的实例调用的info方法都是不同的方法(实例自己的info方法)
添加回答
举报
0/150
提交
取消