Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.07.2015, 19:22
Новичок на форуме
Отправить личное сообщение для ivan_antonov Посмотреть профиль Найти все сообщения от ivan_antonov
 
Регистрация: 14.07.2015
Сообщений: 6

почему в первом варианте вот это "d.c.e = 77;" не тронуло исходное t? а во втором варинте, та же конструкция без return затронула t
Ответить с цитированием
  #12 (permalink)  
Старый 14.07.2015, 19:32
Новичок на форуме
Отправить личное сообщение для ivan_antonov Посмотреть профиль Найти все сообщения от ivan_antonov
 
Регистрация: 14.07.2015
Сообщений: 6

я так понимаю, return возвращает копию чтоли, а не ссылку на локальную переменную?
Ответить с цитированием
  #13 (permalink)  
Старый 14.07.2015, 21:18
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Именно так. Самая мякотка что потребуется метод для модификации этой приватной проперти, ибо наружное изменение никакого влияния на внутренности не окажет.
Ответить с цитированием
  #14 (permalink)  
Старый 14.07.2015, 21:32
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от ivan_antonov
в этом варианте исходное t

тебе уже пояснили, ты создаешь своей ф-ей 2 разных объекта, никакого исходного (общего для них обоих) t не существует, для каждого оно локально. return тут вообще не при чем, что ты ему скажешь то он вернет.
Ответить с цитированием
  #15 (permalink)  
Старый 14.07.2015, 21:34
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от ivan_antonov
я так понимаю, return возвращает копию чтоли, а не ссылку на локальную переменную?
твой ретурн возвращает не копию и не ссылку, он возвращает новый объект. выражение {...} означает: создать новый объект(экземпляр Object) с (опционально) такими-то полями

Последний раз редактировалось jackdempsey2015, 14.07.2015 в 21:37.
Ответить с цитированием
  #16 (permalink)  
Старый 14.07.2015, 22:54
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от jackdempsey2015
он возвращает новый объект
А почему наружные изменения этого "возвернутого" объекта не проникают внутрь функции?

Я просто подумал что ТС привел пример с двумя объектами в порядке преобразования реальной задачи к абстрактной для форума, чтоб никто как не догадался что он там задумал. Поскольку задавать вопрос об ингрессе двух отдельных никак не связанных объектов это нонсенс.
Ответить с цитированием
  #17 (permalink)  
Старый 14.07.2015, 23:01
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от kostyanet
А почему наружные изменения этого "возвернутого" объекта не проникают внутрь функции?
в каком смысле? ЯННП
Ответить с цитированием
  #18 (permalink)  
Старый 14.07.2015, 23:30
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну в каком смысле - если снаружи в этот объект записать число, то внутри в этом объекте такого числа не будет.

Разумеется внутри делается объект по имени и он возвращается. Разницы тут никакой в том самом смысле.
Ответить с цитированием
  #19 (permalink)  
Старый 14.07.2015, 23:32
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

kostyanet,
Короче, я завтра собираюсь бухать, если не забуду, я после поллитра гляну твое сообщение.
Ответить с цитированием
  #20 (permalink)  
Старый 15.07.2015, 13:11
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
в этом варианте исходное t не тронуто, а в нижнем модифицирует
Тронуто, просто и на "d" и на "b" приходится своя собственная копия "t".

Цитата:
я так понимаю, return возвращает копию чтоли, а не ссылку на локальную переменную?
Не совсем.
Не существует никаких локальных переменных. Каждый вызов функции Test создает новую область видимости, в которой создаются абсолютно новые переменные, в которые записываются ссылки на абсолютно новые объекты.

Сообщение от safort
Нет. Ты каждый раз создаёшь новый объект.
Сообщение от рони
каждый раз Test() создаёт новый обьект
Сообщение от foo
твой ретурн возвращает не копию и не ссылку, он возвращает новый объект.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоение метода объекта функции Casufi Общие вопросы Javascript 6 24.06.2015 12:42
достучаться до объекта другой функции SunYang Общие вопросы Javascript 5 14.08.2014 17:01
Событие внутри функции или объекта shaltay Общие вопросы Javascript 2 27.06.2013 18:05
передача объекта через параметр функции PHP zhurchik Серверные языки и технологии 1 06.12.2012 15:24
Можно ли использовать функции в качестве свойства абс_позиционируемого объекта Newgen Элементы интерфейса 1 27.07.2009 14:40