我有以下目的:更新JavaScript對象
var obj1 = {};
obj1.obj2 = {
prop1: 0
};
和下面的函數:
function func1() {
var p = obj1.obj2.prop1;
p += 2;
return p;
};
當更新 'P' 還沒有更新 'obj1.obj2.prop1'。而不是'p'指向原始對象,它現在是它自己的對象?如果是這樣,我怎樣才能讓'p'指針?
我有以下目的:更新JavaScript對象
var obj1 = {};
obj1.obj2 = {
prop1: 0
};
和下面的函數:
function func1() {
var p = obj1.obj2.prop1;
p += 2;
return p;
};
當更新 'P' 還沒有更新 'obj1.obj2.prop1'。而不是'p'指向原始對象,它現在是它自己的對象?如果是這樣,我怎樣才能讓'p'指針?
當你做var p = obj1.obj2.prop1;
,要設置p
到prop1
值。因此,當您更新p
時,您只需更新p
中設置的值。
你可以做的是設置p
到obj1.obj2
。然後你可以更新p.prop1
,它應該更新obj1
。
function func1() {
var p = obj1.obj2;
p.prop1 += 2;
return p.prop1;
}
JavaScript沒有通通過引用這樣你就必須做到以下幾點:
var obj1 = {};
obj1.obj2 = {
prop1: 0
};
function func1(obj) {
obj.obj2.prop1 += 2;
return obj.obj2.prop1;
};
func1(obj1);
p += 2
只是分配一個其他號碼p
,這不是修改指向的對象p
。
而是執行此操作:
obj1.obj2.prop1 += 2;
或
var obj = obj1.obj2;
obj.prop1 += 2;
此答案可能有所幫助:http://stackoverflow.com/a/7744623/1618257 –