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

js闭包的一个疑问

js闭包的一个疑问

扬帆大鱼 2019-04-10 20:48:39
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 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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

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

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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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