2016-07-15 91 views
0
function Game() { 
    this.player = new Component(); 
    this.renderer = new Renderer(this.player); 
} 
function Renderer(player) { 
    this.player = player; 
    this.player.number = 4; 
} 
var game = new Game(); 

我可以通過那種方式獲得變量(4)「數字」的值:game.player.number傳遞給另一個對象的對象的變化是否也發生在第一個對象內?

+0

我想,這可能有助於理解http://dmitrysoshnikov.com/ecmascript/chapter-8-evaluation -strategy/ – llamerr

+0

是的。對象通過引用傳遞。所以當你這樣做時,'this.player = player',玩家的參考被分配,而不是整個對象被複制 – Rajesh

+0

@Rajesh因此,在一個地方的對象的每一個變化都'複製'到這個對象出現的所有地方? – daniel098

回答

0

要回答你的問題,是的。你可以編輯一個對象的內容,並且會反映到原始對象中,但是如果你試圖覆蓋整個對象(它的引用),你不能。

您可以在此的jsfiddle查看示例(選擇Run左上): https://jsfiddle.net/kcx61hye/34/

var player = {number:1}; 
var player2 = {number:2}; 
function Renderer(player) { 
    this.player = player; 
    this.player.number = 4; 
} 
function Renderer2(player) { 
    this.player=player2; 
} 
document.write(player.number); //Outputs 1 
Renderer(player); 
document.write(player.number); //Outputs 4, so object is modified 
Renderer(player2); 
document.write(player.number); //outputs 4, so no modification 
相關問題