Skip to content
Grigoriev Oleg edited this page Mar 24, 2013 · 4 revisions

go.Lang.copy(): копирование объекта или массива

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) будет простой порядковый массив.

Копируются только собственные свойства объектов, прототипы не обходятся.

Clone this wiki locally