Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2012, 08:20
Интересующийся
Отправить личное сообщение для dump Посмотреть профиль Найти все сообщения от dump
 
Регистрация: 14.07.2011
Сообщений: 26

Почему происходит копирование по значению, а не по ссылке?
Вот код:
o={x:2,y:3};
b=false , o;
b.x=7;
alert(o.x);

Почему он выводит 2, а не 7? Разве оператор запятая способен извлечь значение, а не ссылку?
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2012, 08:22
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

o={x:2,y:3};
b=(false , o);
b.x=7;
alert(o.x);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2012, 14:55
Интересующийся
Отправить личное сообщение для dump Посмотреть профиль Найти все сообщения от dump
 
Регистрация: 14.07.2011
Сообщений: 26

Сообщение от devote Посмотреть сообщение
o={x:2,y:3};
b=(false , o);
b.x=7;
alert(o.x);
Да, спасибо. Но я просто хотел узнать, почему происходит копирование по значению? Ведь если манипуляция объектами происходит только по ссылке, то почему оператор запятая возвращает само значение, а не ссылку? И почему оператор скобки в вашем примере возвращает ссылку?
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2012, 20:57
Интересующийся
Отправить личное сообщение для leko Посмотреть профиль Найти все сообщения от leko
 
Регистрация: 04.06.2012
Сообщений: 17

o={x:2,y:3};
b=false , o;
alert(b)
b.x=7;
alert(o.x);
так понятней?
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2012, 21:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от dump Посмотреть сообщение
почему оператор запятая возвращает само значение, а не ссылку?
объекты не передаются по значению, они передаются по ссылке (в JS)

запятая возвратит ссылку на объект.
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2012, 23:01
Интересующийся
Отправить личное сообщение для leko Посмотреть профиль Найти все сообщения от leko
 
Регистрация: 04.06.2012
Сообщений: 17

Сообщение от melky
запятая возвратит ссылку на объект.
ты мой код запускал?
o={x:2,y:3};
b=false , o;
alert(b) // false
b.x=7;
alert(o.x);
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2012, 23:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

а , да. неочевидненько.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему происходит проверка до вызова самой функции? wwwboy Общие вопросы Javascript 5 09.12.2011 03:37
Почему так происходит. demoniqus Общие вопросы Javascript 1 27.03.2011 16:28