Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2011, 12:34
Новичок на форуме
Отправить личное сообщение для kalabro Посмотреть профиль Найти все сообщения от kalabro
 
Регистрация: 28.06.2009
Сообщений: 1

Параменты по ссылке
* Параметры по ссылке

Добрый день. Не знаю, как вещи, с которыми я столкнулась, назваются по-научному, поэтому привожу код:

function editObject1(o) {
  o['new_key'] = 'new_val'; // Работает нормально
}
function editObject2(o) {
  o = {}; // Похоже, что создает новый локальный объект
}
var foo = { 'a': 'b' };
editObject1(foo);
// -> { 'a': 'b', 'new_key': 'new_val' }
editObject2(foo);
// -> { 'a': 'b' }


Было бы интересно узнать, что происходит в функции editObject2().
Ссылки на гугл и теорию тоже подойдут :)

Последний раз редактировалось kalabro, 30.08.2011 в 12:35. Причина: опечатка в заголовке
Ответить с цитированием
  #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.

Изменить это положение нельзя.
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2011, 12:40
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

посмотрите как объекты предаются и всё поймёте почему так.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onclick на ссылке (Sandr) Общие вопросы Javascript 9 23.09.2015 03:50
Вырубить переход по ссылке mycoding Общие вопросы Javascript 11 05.11.2010 22:44
переход по ссылке с n-го раза psqs Events/DOM/Window 8 23.03.2010 21:29
Как сделать чтобы картинка не открывалась по ссылке а скачивалась test Общие вопросы Javascript 4 20.06.2009 08:35
Help ! Как загрузить данные по ссылке из таблицы1 в таблицу2 ? asked86 Общие вопросы Javascript 1 25.03.2009 21:06