循环遍历类的所有对象
问题描述:
假设我有一些类叫做loopObject
,并且我通过类似var apple = new loopObject();
的方式初始化每个对象有没有办法循环遍历类的所有对象,以便可以将每个对象执行一些函数作为参数?如果没有直接的方法,是否有办法在初始化时将每个新对象放入数组中?循环遍历类的所有对象
答
您可以创建包含每个实例,像这样的数组:
function LoopObject() {
LoopObject.all.push(this);
}
LoopObject.all = [];
然而,将导致内存泄漏 - 你的情况下,绝不会走出去的范围。
答
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
这是为什么downvoted? – SLaks 2010-07-13 20:27:42
不会从底部读取所有数组,并在使用后删除每个项目杀死实例并节省内存? – fny 2010-07-13 20:35:47
@faraz:如果你知道什么时候杀了它,是的。但是,每次你调用'new LoopObject()'并且不杀它时,你就会泄漏。记得在'finally'块内杀死。 – SLaks 2010-07-13 20:38:24