2010-07-13 9 views
1

loopObject이라는 클래스가 있고 모든 객체를 초기화하는 코드가 있다고 가정 해 봅시다. var apple = new loopObject(); 클래스의 모든 객체를 루프하여 모든 객체를 각 객체와 함께 수행 할 수 있도록합니다. 매개 변수? 직접적인 메소드가 없다면 초기화 할 때 각각의 새로운 객체를 배열에 배치 할 수있는 방법이 있습니까?클래스의 모든 객체를 통한 루프

답변

2

당신은 다음과 같이 모든 인스턴스를 포함하는 배열을 만들 수 있습니다 그러나

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

을, 그것은 메모리 누수가됩니다 - 인스턴스가 범위 밖으로 이동하지 않습니다. allObjects.length를 사용하여 필요한 allObjects 모든 요소들을

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

이어서 한 수 루프.

+2

이것은 전적으로'allObjects '를 전역으로 사용하는 경우를 제외하고는 제가 대답 한 것입니다. – SLaks

관련 문제