자바 스크립트 폐쇄는 매우 흥미로운 것입니다. 관련 정보 //www.vevb.com/article/29472.htm을 읽은 후 가장 인상적인 것은 다음과 같습니다.
익명이 아닌 폐쇄를 생성하는 가장 쉬운 구문은 다음과 같습니다.
코드 사본은 다음과 같습니다.
var obj = (function () {// 다양한 코드});
클로저의 가장 전형적인 예 :
코드 사본은 다음과 같습니다.
var makecounter = (function () {
var i = 1;
this.test = function () {
Console.log (i);
i ++;
}
이것을 반환하십시오;
});
var obj = makecounter ();
obj.test (); // 1
obj.test (); // 2
var obj1 = makecounter ();
obj1.test (); // 1
obj1.test (); // 2
개인 및 공개 :
코드 사본은 다음과 같습니다.
var makecounter = (function () {
var i = 1;
// 이것은 비공개입니다
함수 log () {
Console.log (i);
i ++;
}
//이 사람은 공개적입니다
this.test () {
통나무();
}
이것을 반환하십시오;
});
var obj = makecounter ();
obj.test (); // 1
obj.test (); // 2
obj.log (); //한정되지 않은
자체 실행 기능 :
처음으로 그런 코드를 보았을 때 나는 다음과 같이 느꼈습니다.
코드 사본은 다음과 같습니다.
var obj = (함수 (창) {
// 다양한 코드
}(창문));
그런 다음 Google에 가서 종종 다음과 같이 글을 쓰는 것을 발견했습니다.
코드 사본은 다음과 같습니다.
var obj = (function () {
var i = 1;
this.test = function () {
Console.log (i);
i ++;
}
이것을 반환하십시오;
} ());
obj.test (); // 1
obj.test (); // 2
가장 간단한 이해는 프로그래머가 게으르고 두 단계에 한 단계에 두 단계를 씁니다.
코드 사본은 다음과 같습니다.
// 이것은 함수입니다. 다음과 같이 OBJ ()를 사용해야합니다
var makecounter = function () {
// 다양한 코드
}
// 이것은 객체입니다. var obj = makecounter ()와 유사합니다.
var obj = (function () {
// 다양한 코드
} ());
매개 변수를 가질 수 있습니다.
코드 사본은 다음과 같습니다.
var output = "New Test";
var obj = (함수 (msg) {
this.test = function () {
Console.log (MSG);
}
이것을 반환하십시오;
}(산출));
obj.test ();
또한 더 복잡하고 진보 될 수 있습니다.
코드 사본은 다음과 같습니다.
var output = "New Test";
var obj = (function (obj, msg) {
//이 사람도 사적입니다. obj.i (! = obj.i)와 유사하지만 obj.i는 아닙니다 (외부에 액세스 할 수 없기 때문에).
var i = 1;
//사적인
함수 log () {
Console.log (i + ":" + msg);
i ++;
}
//공공의
obj.test = function () {
통나무();
}
반환 obj;
} (obj, output));
obj.test (); // 1 : 새로운 테스트
obj.i = 100;
// 변경되지 않았습니다
obj.test (); // 2 : 새로운 테스트
우리가 처음 만났을 때, 우리는 깊은 인상을 남겼습니다. 폐쇄의 사용은 상태와 속성의 유지를 실현합니다. 화면에서 글로벌 변수의 비행을 피합니다. 변수가 항상 재정의되고 재 할당되는 당혹스러운 상황을 끝납니다. 또한 객체를 여러 JS 파일로 분류 할 수도 있습니다. 정말 훌륭합니다.
위는이 기사의 전체 내용입니다. 나는 당신이 그것을 좋아하기를 바랍니다.