Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Хранение в объекте ссылки на другой объект (https://javascript.ru/forum/misc/4732-khranenie-v-obekte-ssylki-na-drugojj-obekt.html)

Человек 17.08.2009 13:39

Хранение в объекте ссылки на другой объект
 
Доброго времени суток.

Что происходит в случае если я создаю свойство в объекте хранящее ссылку на другой объект? В этом свойстве будет храниться целая копия или же именно ссылка? И изменение первоначального экземпляра не приведет к изменению свойства того в котором хранится ссылка?

Приведу пример.

function Page(text, pointer) //страница кники
 {
  this.bookPointer=pointer; //указатель на книгу к которой относится страница
  this.text=text; //текст страницы
 }

function Book(name)
 {
  this.pages=new Array(); //массив оъектов "Page"
  this.name=name;
  this.addNewPage=function(text) //добавление новой страницы  
                                  {
                                    newPage=new Page(text, this); //создание новой страницы
                                     this.pages[this.pages.length]=newPage; //добавление в массив страниц
                                  }

}
newBook=new Book("JS");
newBook.addNewPage("qwerty");


Вопрос в следующем, bookPointer будет содержать ссылку наконкретный экземпляр Book или же целую копию? И изменение свойства newBook.name приведет к изменению newBook.pages[0].bookPointer.name?

Riim 17.08.2009 13:41

Что мешает проверить?

Цитата:

Сообщение от Человек
new Array[]

Квадратные скобки?

JSprog 17.08.2009 13:46

Ссылку...
При использовании new Array скобки должны быть круглые, а квадратные должны быть в коде типа
var a = [1.2, "JavaScript", true, { x:1, y:3 }];

Человек 17.08.2009 13:53

Цитата:

Сообщение от JSprog (Сообщение 27230)
Ссылку...
При использовании new Array скобки должны быть круглые, а квадратные должны быть в коде типа
var a = [1.2, "JavaScript", true, { x:1, y:3 }];

Да да, спасибо скобки случайно поставил.

За ответ спасибо, вот только подскажите, такая организация корректна(хранить в одном объекте массив других объектов, а в каждом из них ссылку на внешний объект), или же есть другой механизм?

JSprog 17.08.2009 13:57

Корректно можно использовать массивы, функции и другие объекты


Часовой пояс GMT +3, время: 05:33.