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

js闭包的一个疑问

js闭包的一个疑问

慕桂英3389331 2019-04-19 16:12:56
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贡献1839条经验 获得超15个赞

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

TA贡献1802条经验 获得超6个赞

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

添加回答

举报

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