JavaScript의 delete
연산자 와 약간 혼동됩니다 . 다음 코드를 보자.
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
이 코드 조각이 실행 된 후에 obj
는 is null
이지만 foo
여전히 정확히 같은 객체를 참조합니다 obj
. 이 객체가 foo
지적한 것과 동일한 객체라고 생각 합니다.
쓰기 가 변수뿐만 아니라 메모리에서 가리키는 delete obj
객체를 삭제 한다고 기대했기 때문에 이것은 혼란 스럽습니다 .obj
obj
이 자바 스크립트의 쓰레기 때문에 콜렉터가 나는 물체를 가리키는 다른 변수를 가지고 있지 않은 경우, 그것은 그래서하는 유지 / 해제를 기준으로하고있다인가 것이다 메모리에서 제거?
(제 테스트는 Safari 4에서 수행되었습니다.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
것이 아닙니다. 귀하의 경우 객체 키를 제거하기위한 삭제 사용 객체가 삭제되지 않았는지 확인 obj
: 사용법 delete obj.helloText
을 확인한 다음 확인foo now foo is an empty object
delete
는 자바 스크립트에서 객체를 삭제하는 것이 아닙니다. delete
객체 키를 제거하는 데 사용됩니다. 귀하의 경우 var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
에는 객체가 삭제되지 않습니다. 확인 obj
. 다음, 실행 delete obj.helloText
하면 foo
이제 비어 있음을 알 수 있습니다 "" "