为了账号安全,请及时绑定邮箱和手机立即绑定

js的prototype

js的prototype

西兰花伟大炮 2017-03-08 19:12:00
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方法)



查看完整回答
1 反对 回复 2017-03-16
  • 1 回答
  • 1 关注
  • 1263 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信