Javascript.RU

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

копия объекта из функции
function Test() {
        var t = { e: 3 };

        return { c: t };
    }

    var a = Test();
    var b = Test();

    a.c = undefined;
    alert(b.c.e)


Объясните, пожалуйста, почему "a.c" не влияет на "b.c"? Ведь и там и там свойство "с" это ссылка на один и тот же объект?
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2015, 15:44
Новичок на форуме
Отправить личное сообщение для ivan_antonov Посмотреть профиль Найти все сообщения от ivan_antonov
 
Регистрация: 14.07.2015
Сообщений: 6

почему "a.c = undefined;" не изменяет объект для b? ведь он просто ссылается на "t", который изменяет "a.c = undefined;"
Ответить с цитированием
  #3 (permalink)  
Старый 14.07.2015, 15:52
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Сообщение от ivan_antonov Посмотреть сообщение
Объясните, пожалуйста, почему "a.c" не влияет на "b.c"? Ведь и там и там свойство "с" это ссылка на один и тот же объект?
Нет. Ты каждый раз создаёшь новый объект.
Ответить с цитированием
  #4 (permalink)  
Старый 14.07.2015, 15:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ivan_antonov,
каждый раз Test() создаёт новый обьект
Ответить с цитированием
  #5 (permalink)  
Старый 14.07.2015, 15:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ivan_antonov,
с у Вас переменная(свойство) window
a.c и b.с - не имеют никакого отношения к с , тут с свойство конкретных объектов a или b
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2015, 16:35
Аспирант
Отправить личное сообщение для jackdempsey2015 Посмотреть профиль Найти все сообщения от jackdempsey2015
 
Регистрация: 23.06.2015
Сообщений: 53

Сообщение от Deff
с у Вас переменная(свойство) window
с чего бы это?
Ответить с цитированием
  #7 (permalink)  
Старый 14.07.2015, 16:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

jackdempsey2015,
Он переименовал
Было так: c = undefined;
Ответить с цитированием
  #8 (permalink)  
Старый 14.07.2015, 19:02
Новичок на форуме
Отправить личное сообщение для ivan_antonov Посмотреть профиль Найти все сообщения от ivan_antonov
 
Регистрация: 14.07.2015
Сообщений: 6

Тогда почему же такая конструкция модифицирует исходный объект?
var t = { e: 3 };

        var d = t;
        d = { c: t };

        d.c.e = 5;


а когда "{ c: t }" возвращаю через return - уже не модифицирует
Ответить с цитированием
  #9 (permalink)  
Старый 14.07.2015, 19:13
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
а когда "{ c: t }" возвращаю через return - уже не модифицирует
Что не модифицирует? Объект, на который также ссылается переменная t? Модифицирует.
Ответить с цитированием
  #10 (permalink)  
Старый 14.07.2015, 19:20
Новичок на форуме
Отправить личное сообщение для ivan_antonov Посмотреть профиль Найти все сообщения от ivan_antonov
 
Регистрация: 14.07.2015
Сообщений: 6

function Test() {
        var t = { e: 3 };

        return { c: t };
    }

    var d = Test();
    var b = Test();

    d.c.e = 77;
    alert(b.c.e);

в этом варианте исходное t не тронуто, а в нижнем модифицирует
var t = { e: 3 };
        var d = t;
        d = { c: t };
        d.c.e = 5;
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоение метода объекта функции 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