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

关于js对象原型的问题?

关于js对象原型的问题?

未期而遇 2017-03-09 18:23:51
<script> var plugin = (function () { function Plugin() { } Plugin.prototype = { constructor : Plugin, initCount : 0, count:function () { this.initCount ++ return this.initCount } } return Plugin })() </script>截图为什么p2.count()的结果为1,原型对象不是共享属性和方法吗,initCount 是原型对象的属性,为什么p1和p2没有共享
查看完整描述

3 回答

已采纳
?
遥望星辰_

TA贡献119条经验 获得超85个赞

count:function () {
         Plugin.prototype.initCount ++
         return Plugin.prototype.initCount
   }

如果是这样就会共享initCount,实例化p1和p2,this也就分别指向了p1 p2,initCount自然不会是共享的

查看完整回答
反对 回复 2017-03-10
  • 未期而遇
    未期而遇
    你给出的代码能看到效果,我仔细想了下是this.initCount ++ 的问题,它相当于p1.initCount = p1.prototype.initCount + 1。
?
西兰花伟大炮

TA贡献376条经验 获得超318个赞

你理解的共享和那个共享不是一回事哦,实例化后的都可以使用各自的initCount而已

查看完整回答
1 反对 回复 2017-03-09
  • 未期而遇
    未期而遇
    我是这样理解的,两个实例指向同一个原型对象,而initCount 是原型对象的属性,实例本身没有initCount属性,都需要获取原型对象上的这个属性。所以我一直认为所有实例获取的是同一个值。 希望你说的详细一些,十分感谢
  • 3 回答
  • 1 关注
  • 1460 浏览
慕课专栏
更多

添加回答

举报

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