我可以将对象定义为原型成员吗?如果是,那么如何通过引用实例化对象来停止调用?
function MediaUser (){
}
MediaUser.prototype.oThumb = {sUrl: 'noImage.png'};
var oMediaUser = new MediaUser();
var oMediaUser2 = new MediaUser();
oMediaUser.oThumb.sUrl = "a.png";
console.log(oMediaUser2.oThumb.sUrl); // prints a.png
答案 0 :(得分:2)
您在原型中定义的所有内容都由所有对象共享。如果你希望它对所有实例都不同,你必须把它放在构造函数中:
function MediaUser (){
this.oThumb = {sUrl: 'noImage.png'}
}
var oMediaUser = new MediaUser();
var oMediaUser2 = new MediaUser();
oMediaUser.oThumb.sUrl = "a.png";
console.log(oMediaUser2.oThumb.sUrl); // prints noImage.png

答案 1 :(得分:0)
事实上,当你为每个对象寻找单独的值时,完全摆脱the prototype属性
function MediaUser (url){
this.sUrl = url || 'noImage.png';
}
var oMediaUser = new MediaUser("a.png");
var oMediaUser2 = new MediaUser();
console.log(oMediaUser.sUrl); // prints a.png
console.log(oMediaUser2.sUrl); // prints noImage.png