Javascript 遍历类的所有对象

Javascript 遍历类的所有对象,javascript,jquery,Javascript,Jquery,假设我有一个名为loopObject的类,我通过var apple=new loopObject()之类的东西初始化每个对象是否仍然可以循环一个类的所有对象,以便将每个对象作为参数执行某些函数?如果没有直接方法,是否有方法在初始化时将每个新对象放入数组?您可以创建一个包含每个实例的数组,如下所示: function LoopObject() { LoopObject.all.push(this); } LoopObject.all = []; 但是,它会泄漏内存-您的实例永远不会超出范

假设我有一个名为
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 )
}

然后可以根据需要使用
allObjects来循环
allObjects
的所有元素。length

不会从底部读取所有数组并在使用后删除每个项目,从而杀死实例并节省内存吗?@faraz:如果你知道何时杀死它,是的。但是,每次调用
newloopobject()
并且不杀死它时,都会泄漏。记住在
finally
block中终止。TypeError:无法调用行
LoopObject.all.push中未定义的方法'push'
@faraz:你忘了
LoopObject.all=[]
(或者您在其他地方删除或重新分配了它)空方括号导致令牌错误:“Uncaught SyntaxError:Unexpected token]”这正是我的回答,除了使用
allObjects
作为全局变量。
var allObjects [] = new Array();
function loopObject() {
    ...
    allObjects.push(this);
}