>  기사  >  웹 프론트엔드  >  JavaScript_javascript 팁에서 클로저를 제거하는 일반적인 방법 소개

JavaScript_javascript 팁에서 클로저를 제거하는 일반적인 방법 소개

WBOY
WBOY원래의
2016-05-16 16:09:061603검색

JavaScript의 클로저는 적극적으로 개발하는 기능이기도 하고, 수동적으로 개발하는 기능이기도 합니다. 즉, 한편으로는 클로저의 일부 문제를 해결하기 위해 JS가 더 잘할 수 있습니다. 특정 문제, JS 문제, 그리고 문제를 간신히 해결하기 위해 클로저를 사용해야 했습니다.

JS 클로저로 문제를 더 잘 해결할 수 있다면 물론 클로저를 사용하는 것이 더 좋습니다.

제가 논의하고 있는 것은 후자입니다. 왜냐하면 "변수는 한 번만 초기화됩니다"라는 요구 사항과 같은 클로저로 해결해야 하는 JS 자체의 한계 때문입니다.

기존 언어는 다음과 같이 해결됩니다.

코드 복사 코드는 다음과 같습니다.

수업 수업{
함수 초기화(){
This.n = 0;
}
함수 func(){
이.n ;
이거 돌려주세요.n;
}
}
var obj = new Class();

JavaScript는 일반적으로 클로저를 사용하여 이 문제를 해결합니다.

코드 복사 코드는 다음과 같습니다.

var obj = {
func : (함수(){
var n = 0;
반환 함수(){
;
n을 반환합니다;
}
})()
}

하지만 저는 이 방법(클로저 제거)을 선호합니다.

코드 복사 코드는 다음과 같습니다.

함수 클래스(){
var self = this;
self.n = 0;
self.func = 함수(){
self.n ;
return self.n;
}
}
var obj = new Class();

후자가 더 나은 확장성을 갖기 때문에 변수에 대해 다른 작업을 구현해야 하는 경우 후자는 다른 함수(즉, 단순 선형 확장)를 정의할 수 있는 반면 전자(클로저)는 완전히 다시 작성해야 합니다. (이것이 리팩토링이라는 단어를 자주 듣는 이유입니다.)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.