копия объекта из функции
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"? Ведь и там и там свойство "с" это ссылка на один и тот же объект? |
почему "a.c = undefined;" не изменяет объект для b? ведь он просто ссылается на "t", который изменяет "a.c = undefined;"
|
Цитата:
|
ivan_antonov,
каждый раз Test() создаёт новый обьект |
ivan_antonov,
с у Вас переменная(свойство) window a.c и b.с - не имеют никакого отношения к с , тут с свойство конкретных объектов a или b |
Цитата:
|
jackdempsey2015,
Он переименовал Было так: c = undefined; |
Тогда почему же такая конструкция модифицирует исходный объект?
var t = { e: 3 }; var d = t; d = { c: t }; d.c.e = 5; а когда "{ c: t }" возвращаю через return - уже не модифицирует |
Цитата:
|
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; |
Часовой пояс GMT +3, время: 06:41. |