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

js闭包的一个疑问

js闭包的一个疑问

慕姐8265434 2019-04-21 20:37:34
functionMyObject(name,message){this.name=name.toString();this.message=message.toString();}MyObject.prototype={getName:function(){returnthis.name;},getMessage:function(){returnthis.message;}};和functionMyObject(name,message){this.name=name.toString();this.message=message.toString();}MyObject.prototype.getName=function(){returnthis.name;};MyObject.prototype.getMessage=function(){returnthis.message;};代码中的下面2段有什么区别?哪种写法比较好一些?MyObject.prototype={getName:function(){returnthis.name;},getMessage:function(){returnthis.message;}};和MyObject.prototype.getName=function(){returnthis.name;};MyObject.prototype.getMessage=function(){returnthis.message;};各位麻烦帮我解答下,不是很懂..谢谢
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

如果使用new操作符实例化第一个MyObject的时候会把constructor属性设为MyObject,而你使用了对象字面量来重写了原型,constructor值就不存在了。
第二个则没有这个问题。
推荐使用第二种方法,或者在第一种方法上重新把constructor属性指向MyObject。
                            
查看完整回答
反对 回复 2019-04-21
?
红颜莎娜

TA贡献1842条经验 获得超13个赞

第一种:
构造函数MyObject原来指向了空的原型对象,后来你将它又指向了新的原型对象。
第二种:
构造函数MyObject原来指向了空的原型对象,后又为其原有的原型对象对象添加了两个方法。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号