모든 코드가 내부에 싸여있다 :IIFE로 포장했을 때 자바 스크립트 라이브러리는 어떻게 사용할 수 있습니까? 실행 컨텍스트가 삭제되지 않았습니까? 밑줄 JS 라이브러리에서
(function() {
//rest of library etc.
}.call(this));
내가 (의() 함수를 감싸는 것을 이해하는 것은) 네임 스페이스 목적이며, .call (이) 시작 통과에 라이브러리를 호출하는 window 객체.
그러나 일단 내 실행 컨텍스트가 실행 완료되면 '삭제'됩니다. 그렇다면이 라이브러리의 모든 코드는 다른 스크립트 파일에서 어떻게 사용할 수 있습니까?
질문에 답을하고있다하지만 내 머리에이 질문을 가져왔다 :
이이 지금 나에게 의미가 있습니다. 이 함수는 실행되고 라이브러리를 윈도우 객체에 연결합니다. 그러나이 접근법을 사용할 때 라이브러리는 동일한 객체 이름을 윈도우 객체에 첨부하면 서로 덮어 쓸 수 있습니다. 어떤 점 통화 기능 이후
//library code starts
(function(){
this.hello = function(){
console.log("asd");
}
}).call(this);
//library code ends
//outside the library
//will print the function showing that it is available outside the library
console.log(window.hello); //will print the function
console.log(hello);
//will console.log hello
hello();
이 함께 인생을 호출 (:
이 개념은 간단한 예제 여기에 설명 할 수var library1 = function(
var func1 = function(){
};
return {
func1: func1
})(this);
글로벌 상태를 수정합니다. 'window.myNamespace = {stuff}'. 'stuff'는 (비록 다른 것은 없지만) 어휘 적 종료 때문에 IIFE의 실행 컨텍스트에 대한 액세스 권한을 계속 갖습니다. –