копия объекта из функции
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, время: 15:41. |