-
Notifications
You must be signed in to change notification settings - Fork 1
Lang copy
Grigoriev Oleg edited this page Mar 24, 2013
·
4 revisions
copy(source)
-
source
{(Array|Dict)}: исходный объект или массив -
:return
{(Arrat|Dict)}: копия исходного аргумента
При простом присваивании обе переменные начинают разделять один объект.
var One = {
'x': 1,
'y': 2
};
var Two = One;
Two['y'] = 3;
console.log(One.y); // 3
go.Lang.copy()
создаёт новый объект с тем же списком элементов.
var One = {
'x': 1,
'y': 2
};
var Two = go.Lang.copy(One);
Two['y'] = 3;
console.log(One.y); // 2
Копирование, однако, не глубокое. Свойства продолжают разделять те же объекты.
var One = {
'x': 1,
'y': [1, 2]
};
var Two = go.Lang.copy(One);
Two['y'].push(3);
console.log(One.y); // [1, 2, 3]
Подразумевается копирование простых структур данных, а не индивидуальных объектов.
Скопированный объект не сохраняет цепочки прототипов исходного.
Копией любых коллекций (например, HTMLCollection
) будет простой порядковый массив.
Копируются только собственные свойства объектов, прототипы не обходятся.