2010-07-13 4 views
1

Предположим, что у меня есть класс, называемый loopObject, и я инициализирую каждый объект через что-то вроде var apple = new loopObject();. Все равно, чтобы пройти через все объекты класса, чтобы некоторые функции выполнялись с каждым объектом как параметр? Если нет прямого метода, есть ли способ разместить каждый новый объект в массив при инициализации?Петля через все объекты класса

ответ

2

Вы можете создать массив, который содержит все экземпляры, как это:

function LoopObject() { 
    LoopObject.all.push(this); 
} 
LoopObject.all = []; 

Однако, это утечка памяти - ваши экземпляры никогда не выходят из области видимости.

+0

Почему это было приостановлено? – SLaks

+0

Не читал бы весь массив снизу и удалял каждый элемент после использования, убивая экземпляр и сохраняя память? – fny

+0

@faraz: Если вы знаете, когда его убить, да. Однако каждый раз, когда вы вызываете 'new LoopObject()' и не убиваете его, вы будете течь. Не забудьте убить внутри блока 'finally'. – SLaks

1
function loopObject(){ 
this.name = 'test' 
}; 
var list = [], x = new loopObject, y = new loopObject; 

list.push(x) 
list.push(y) 

for (var i = list.length; i--;) { 
    alert(list[i].name) 
} 
0
var allObjects [] = new Array(); 
function loopObject() { 
    ... 
    allObjects.push(this); 
} 

Тогда можно цикл по всем элементам allObjects по мере необходимости с помощью allObjects.length.

+2

Это именно то, что я ответил, за исключением того, что 'allObjects' является глобальным. – SLaks

Смежные вопросы