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
   102   103   104   105   106   107   108   109   110   111   112