2010-07-13 180 views
1

假設我有一些類叫做loopObject,並且我通過類似var apple = new loopObject();的方式初始化每個對象有沒有辦法循環遍歷類的所有對象,以便可以將每個對象執行一些函數作爲參數?如果沒有直接的方法,是否有辦法在初始化時將每個新對象放入數組中?循環遍歷類的所有對象

回答

2

您可以創建包含每個實例,像這樣的數組:

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

然而,將導致內存泄漏 - 你的情況下,絕不會走出去的範圍。

+0

這是爲什麼downvoted? – SLaks 2010-07-13 20:27:42

+0

不會從底部讀取所有數組,並在使用後刪除每個項目殺死實例並節省內存? – fny 2010-07-13 20:35:47

+0

@faraz:如果你知道什麼時候殺了它,是的。但是,每次你調用'new LoopObject()'並且不殺它時,你就會泄漏。記得在'finally'塊內殺死。 – SLaks 2010-07-13 20:38:24

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 2010-07-14 13:09:49