나는 모바일을위한 무언가를 구축하고 어떻게 든, null 개체, null 비트 메모리를 해제하는 명확하게하고 싶습니다. 여기에 두 가지 빠른 예제가 있습니다. 두 가지 모두 익명 함수이지만 믿을 때 어떤 방식으로 더 낫거나 더 유효한 접근 방법입니까? 미안해. 내가 잘못하면. 나에게도 내가 필요로 할 때까지 객체가 만들어지지 않을 때 첫 번째 객체가 더 많이 마음에 들지만 모두 똑같은 것을하는 것처럼 보입니다. 두 번째 버전은 즉시 변수, 객체 등을 생성하기위한 코드를 실행하지만 필요할 때까지 기본 빌드 기능을 수행하지 않습니다.더 나은 접근 변수, 자바 스크립트의 개체를 null
저는 어떤 방식이 더 일반적인 것인지 파악하려고합니다. 나는 나 같은 초보자가 익명의 기능을 오해한다는 것을 알고있다. 당신의 기여에 감사드립니다.
V1
var app = function() {
//create variables, objects
var a = 'Data 1';
var b = 'Data 2';
//do some things
console.log(a + ', ' + b);
//do a cleanup
app.cleanup = function() {
a = null;
b = null;
console.log(a, b);
}
}
setTimeout(app, 200);
V2
var app = {};
(function(){
//create variables, objects
var a = 'Data 1';
var b = 'Data 2';
app.build = function(){
//do some things
console.log(a + ', ' + b);
}
//do a cleanup
app.cleanup = function(){
a = null;
b = null;
console.log(a, b);
}
setTimeout(app.build,200);
})();
나중에 HTML 또는 경우에 당신은 걱정하지 말아야
<input type="button" onclick="app.cleanup()" value="clean" />
리소스를 확보하는 것에 대해 걱정할 필요가 없습니다. JavaScript에는 가비지 컬렉터가있어 범위를 벗어난 변수를 선택하여 파괴합니다. 객체를 필요로하지 않을 때 객체에 대한 참조를 삭제하고 ('delete obj.yourReference', /'reference = null' /'reference = undefined') 가비지 컬렉터가 나머지 작업을하도록하십시오. – Matt
하지만 참조 또는 null을 삭제하려면 내 V1 또는 V2를 사용 하시겠습니까? 나는 여전히 어딘가에 그것을 할 필요가 있음을 의미한다. – devjs11
@Matt가 말한 것을 단순화합니다. 변수를 사용할 수 없게되면 (어떤 방법으로도 변수에 액세스 할 수없는) 가비지 수집으로 표시됩니다. 기본적으로 변수가 함수 (로컬 변수, 경우에 따라)에서 만들어진 경우 함수가 끝난 후에는 아무도 해당 변수에 액세스 할 수 없으므로 자동으로 정리됩니다. – bezmax