Page 107 - 6105
P. 107
Увага: об'єкт - поза змінною. В змінній - лише «адреса» (посилання) для
нього. При копіюванні змінної з об'єктом – копіюється це посилання, а об'єкт як і
раніше залишається в єдиному екземплярі.
Наприклад:
var user = {name: "Вася"}; // в змінній - посилання
var admin = user; // посилання для підтвердження
Отримали дві змінні, в яких знаходяться посилання на один і той же об'єкт.
Так як об'єкт всього один, то зміни через будь-яку змінну видно в інших змінних:
var user = {name: 'Вася'};
var admin = user;
admin.name = 'Петя'; // поміняли дані через admin
alert (user.name); // 'Петя', зміни видно в user
Іноді, на практиці, дуже рідко, потрібно скопіювати об'єкт цілком, створити
саме повну незалежну копію, «клон» об'єкта. Для цього потрібно пройти по
об'єкту, дістати дані і скопіювати на рівні примітивів. Наприклад:
var user = {
name: "Вася",
age: 30
};
var clone = {}; // новий порожній об'єкт
// скопіюємо в нього всі властивості user
for (var key in user) {
clone [key] = user [key];
}
// тепер clone - повністю незалежна копія
clone.name = "Петя"; // поміняли дані в clone
alert (user.name); // як і раніше "Вася"
106