2013-05-20 66 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;