Javascript 모듈 패턴을 구현하고 있는데 어떻게 사용하는지 잘 알고 있습니다. 필자가 이해할 수없는 것은 일단 함수가 실행되고 반환 값이 할당되면 개인 변수 및 메서드에 어떤 일이 발생하는지 개념입니다. 내가 파일을 실행하면Javascript 모듈 패턴, 개인 변수는 어디에 있습니까?
var myModule = (function() {
var privateVar1, privateVar2 = 10, privateLogger, privateHello;
privateLogger = function(someInput) {
console.log(someInput);
};
privateHello = function() { console.log('Hello World!');}
return {
publicVar: 'myName',
publicCounter: 0,
publicIncrementor: function(bar) {
bar++;
privateLogger(bar);
privateHello();
}
}
})();
console.log(myModule);
console.log(myModule.publicIncrementor.toString());
, 나는 다음의 출력을 얻을 : 내가 지금과 같은 모듈이있는 경우
이에서
{ publicVar: 'myName',
publicCounter: 0,
publicIncrementor: [Function] }
function (bar) {
bar++;
privateLogger(bar);
privateHello();
}
을 인 MyModule 이제 변수처럼 보인다 publicVar, publicCounter 및 publicIncrementor가 무엇인지 알 수 있습니다. 그래서 privateHello가 무엇인지 어떻게 알 수 있습니까? 인스턴스화 후에 함수 정의는 어디에 있습니까? 그것은 myModule의 일부가 아닙니다 (console.log (myModule)에는 표시되지 않습니다). 그것은 세계적인 기능이 아닙니다 (이 패턴의 핵심을 피하는 것). 그렇다면이 함수 정의는 현재 어디에서 살고 있습니까?
또는 privateHello 함수가 myModule.publicIncrementor를 호출 할 때마다 다시 정의되는 것입니까?
감사합니다. 어떤면에서 내가 필요한 것은 무슨 일이 일어 났는지 설명하는 용어였습니다. 따라서 연구를 끝내라는 사실을 알려주는 것은 큰 도움이됩니다. –
또한이 문제를 살펴볼 때이 연습의 IIFE 부분을 무시하고있었습니다.이 부분은 범위 질문과 같은 큰 부분입니다. –
이 링크는 매우 유용했습니다 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures –