2013-05-20 2 views
3

У меня есть следующий объект:Обновление Javascript объектов

var obj1 = {}; 

obj1.obj2 = { 
    prop1: 0 
}; 

и следующую функцию:

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

При обновлении 'р' он не обновляется 'obj1.obj2.prop1'. Вместо «p», указывающего на исходный объект, теперь он сам является собственным объектом? Если да, как я могу сделать «p» указателем?

+5

Этот ответ может помочь: http://stackoverflow.com/a/7744623/1618257 –

ответ

4

Когда вы 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; 
} 
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; 
Смежные вопросы