循环遍历类的所有对象

问题描述:

假设我有一些类叫做loopObject,并且我通过类似var apple = new loopObject();的方式初始化每个对象有没有办法循环遍历类的所有对象,以便可以将每个对象执行一些函数作为参数?如果没有直接的方法,是否有办法在初始化时将每个新对象放入数组中?循环遍历类的所有对象

您可以创建包含每个实例,像这样的数组:

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

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) 
} 

var allObjects [] = new Array(); 
function loopObject() { 
    ... 
    allObjects.push(this); 
} 

然后可以循环通过作为必要allObjects所有元素使用allObjects.length

+2

这正是我回答的,除了'allObjects'作为全局。 – SLaks 2010-07-14 13:09:49