如何通过引用存储在原型中的对象来停止传递?

时间:2016-05-23 18:33:07

标签: javascript oop prototype

我可以将对象定义为原型成员吗?如果是,那么如何通过引用实例化对象来停止调用?

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 

2 个答案:

答案 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