2011-02-23 6 views
6
var a = { 
    "example" : true 
}; 

var x = [a], y = [a]; 

delete x[0]; 

console.log(y); 

위의 코드에서 x로 참조가 삭제 된 것이 아닌가요?참조가 아닌 객체 자체를 삭제할 수 있습니까

+0

"삭제 a;" ? – Krumelur

+0

객체'a'를 참조 해제하려고합니다. –

+1

수동 메모리 관리를 원한다면 잊어 버리십시오. GC는 적합하다고 판단 할 때 삭제되고 더 이상 참조가 없다는 것을 증명할 수있을 때 삭제됩니다. – delnan

답변

10

. 객체에 대한 참조가있는 한 가비지 수집되지 않습니다.

정리하려면 더 이상 참조 할 사항이 없는지 확인하십시오.

질문에 대답하려면 아니요, 명시 적으로 개체를 파괴 할 방법이 없습니다. ay[0]이 계속 참조하는 경우 x 변수에서 처리 할 수 ​​없습니다.

분명히 말하면 x[0]a을 참조하지 않습니다. a이 참조하는 메모리의 동일한 개체를 가리 킵니다.

+0

그래서 색인을 모르더라도 y에서 y를 제거 할 수있는 방법이 없습니까? – glider

+1

@glider :'y' 배열의 모든 항목을 역 참조하는 것 외에, 배열을 검색 (지원되는 경우'.indexOf() 사용)하기 위해 반복하는 것 외에는 실제로는 없습니다. – user113716

+0

고마워, 그게 내가 알고 싶었던 전부 야. – glider

관련 문제