Показать сообщение отдельно
  #2 (permalink)  
Старый 30.08.2011, 12:39
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

В JS всё и везде передается по значению. Объекты, в свою очередь, никогда не хранятся в переменных, в переменных всегда хранятся только ссылки на них. И вот эти ссылки передаются по значению.

Таким образом, в editObject1 Вы изменяете свойство объекта, на которое ссылается локальная переменная o (и эта ссылка совпадает с foo), а в editObject2 Вы изменяете саму переменную o, т.е. она теперь ссылается на совсем другой объект, никак не связанный с foo.

Изменить это положение нельзя.
Ответить с цитированием