2013-05-20 122 views
3

我有以下目的:更新JavaScript對象

var obj1 = {}; 

obj1.obj2 = { 
    prop1: 0 
}; 

和下面的函數:

function func1() { 
    var p = obj1.obj2.prop1; 
    p += 2; 
    return p; 
}; 

當更新 'P' 還沒有更新 'obj1.obj2.prop1'。而不是'p'指向原始對象,它現在是它自己的對象?如果是這樣,我怎樣才能讓'p'指針?

+5

此答案可能有所幫助:http://stackoverflow.com/a/7744623/1618257 –

回答

4

當你做var p = obj1.obj2.prop1;,要設置pprop1值。因此,當您更新p時,您只需更新p中設置的值。

你可以做的是設置pobj1.obj2。然後你可以更新p.prop1,它應該更新obj1

function func1() { 
    var p = obj1.obj2; 
    p.prop1 += 2; 
    return p.prop1; 
} 
1

JavaScript沒有通通過引用這樣你就必須做到以下幾點:

var obj1 = {}; 

obj1.obj2 = { 
    prop1: 0 
}; 

function func1(obj) { 
    obj.obj2.prop1 += 2; 
    return obj.obj2.prop1; 
}; 

func1(obj1); 
1

p += 2只是分配一個其他號碼p,這不是修改指向的對象p

而是執行此操作:

obj1.obj2.prop1 += 2; 

var obj = obj1.obj2; 
obj.prop1 += 2;