Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ООП и JS. Коллекция объектов (https://javascript.ru/forum/misc/21875-oop-i-js-kollekciya-obektov.html)

grus 27.09.2011 23:52

ООП и JS. Коллекция объектов
 
function Animal(name) {
    this.name = name
    this.canWalk = true
}
 
var animal = new Animal("скотинка")
 
function Rabbit(name) {
    this.name = name
}

big = new Rabbit('Chuk')
small = new Rabbit('Gek')


как в такой конструкции получить список объектов (коллекцию) потомков класса Animal?
как получить список объектов я знаю,как в такой конструкции получить список потомков класса Animal?

Sweet 28.09.2011 11:14

Цитата:

Сообщение от grus
как получить список объектов я знаю

И как же?:) Если понять, что для тебя "получить список объектов", можно подумать, как "получить список потомков класса Animal":)

grus 28.09.2011 15:16

function list() {
		for (var key in obj) {
			alert(key+':'+obj[key])
		}
}

вот таким нехитрым способом можно получить объекты класса

Sweet 28.09.2011 15:43

Цитата:

Сообщение от grus
вот таким нехитрым способом можно получить объекты класса

Не, так получается объект, в который скопированы свойства и методы другого объекта. Такой объект уже даже не instanceof Animal.
Вообще, можно хранить ссылки либо в прототипе, либо в конструкторе:
function Animal(name) {
    this.name = name
    this.canWalk = true
    *!*this.constructor.prototype.collection.push( this );*/!*
}
Animal.prototype.collection = [];

Но почему бы не сделать так:
var big = new Rabbit('Chuk'),
    small = new Rabbit('Gek'),
    collection = [ big, small ];
?

grus 28.09.2011 19:48

спасибо, оба варианта подходят, второй я и сам думал использовать


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