js闭包的一个疑问

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;
};
各位麻烦帮我解答下,不是很懂..谢谢
慕桂英3389331
浏览 373回答 2
2回答

紫衣仙女

如果使用new操作符实例化第一个MyObject的时候会把constructor属性设为MyObject,而你使用了对象字面量来重写了原型,constructor值就不存在了。第二个则没有这个问题。推荐使用第二种方法,或者在第一种方法上重新把constructor属性指向MyObject。

呼啦一阵风

第一种:构造函数MyObject原来指向了空的原型对象,后来你将它又指向了新的原型对象。第二种:构造函数MyObject原来指向了空的原型对象,后又为其原有的原型对象对象添加了两个方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript