2016-05-23 33 views
2

我可以將對象定義爲原型成員嗎?如果是,那麼我怎樣才能通過引用實例化的對象來停止調用?如何通過引用保存原型中的對象來阻止傳遞?

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

您在原型中定義的所有內容都由所有對象共享。你必須把該構造函數裏面,如果你希望它所有實例是不同的:

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

+0

媽的,打我給它 –

+0

這樣@Gothdo,任何時候如果我想添加其他對象內部的對象,我總是把它作爲一個實例成員,而不是原型成員? – Gan

+0

@Gan沒錯。 –

0

事實上,當你正在尋找不同的價值爲每個對象,擺脫泰德原型財產共

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 
+0

不要使用'A = A || B'構建,看到http://stackoverflow.com/questions/2802055/what-does-the-construct-x-x-y-mean/34707750#34707750 –

+0

@Gothdo的結構是很好,只要你知道的陷阱。不使用它會在很多情況下表現出缺乏理解,就像總是不加任何東西一樣使用===一樣。 – plalx

+0

@plalx嗯,總是使用'==='被認爲是一個好習慣。 –

相關問題