Того, в кого она аггрегирована. Как у нас с ООП?
У меня определенно наблюдаются некоторые проблемы с терминологией.
Ты не мог бы пояснить ?
Если можно кодом...
Если нельзя - тыкни меня, пожалуста, носом, где посмотреть.
А как ты собираешься "абстрактно удалять" книгу? В JS объекты удаляет сборщик мусора. Когда сочтет нужным.
А разве нельзя сделать это с помощью delete ?
The delete operator deletes an object, an object's property, or an element at a specified index in an array.
из Core JavaScript Reference 1.5
В этом примере нет никакого "списка книг вообще". Есть класс Library.
Класс Library содержит массив books, в котором хранятся ссылки на экземпляры класса Book.
Что же это, как не список книг ?
И есть ли разница, хранить этот список в новом классе (Library) или в классе Book, только только используяя прототип (правда в данном конкретном примере это несколько нелогично - книга содержит библиотеку, а не наоборот)?
Например так: (Код в конце поста).
Или именно такое хранение данных и вызовет утечку памяти ?
Тогда такой список можно хранить только во внешних обьектах ?
если, к примеру, у тебя часть объектов Книга создается пользователем, а часть -- системой для каких-то других целей. А суммироваться всегда будет полный список. Что явно нелепо.
А почему нельзя разделить "системные" книги и "пользовательские" каким то свойством ? Например book_type = 'system' || 'user' ?
PHP:
function book(title,price){
this.title = title;
this.price = price;
if(book.prototype.count==undefined){
book.prototype.count=1;
}else{
book.prototype.count++;
}
if(book.prototype.library==undefined){
book.prototype.library = new Array();
book.prototype.library[title] = this;
}else{
book.prototype.library[title] = this;
}
this.mid_price = function(){
var sum = new Number(0);
for (var i in this.library) {
sum+=this.library[i].price;
}
var mid = Math.round(sum/this.count);
return mid;
}
this.delete_book = function(){
book.prototype.count--;
delete this.library[this.title];
}
}
r1= new book('book1',30);
r2= new book('book2',20);
r3= new book('book3',60);
alert(r1.mid_price());
r3.delete_book();
delete r3;
alert(r1.mid_price());
P.S. Удалить обьект из него самого невозможно ?