2012-04-04 3 views
1

Require.js 설명서의 Why AMD 섹션에서 다음을 묻습니다.JS 모듈로드 컨텍스트에서 즉시 실행되는 팩토리 함수는 무엇입니까?

오늘 정의 된 JavaScript 코드는 어떻게 작성됩니까?

  • 는 즉시 실행 공장 기능을 통해 정의 : 다른 답변 중

    는 다음과 같습니다.

이해 자바 스크립트 공장 기능은 단순히 개체의 새 인스턴스를 반환하는 함수이다 (적어도 내가 뭘 생각)하지만 문제는이 질문의 맥락에서 무엇을 의미하는지 이해하지 않는다 . 누군가 이것을 설명 할 수 있습니까?

+0

내가 수집 할 수있는 것에서는 즉시 실행되는 함수가 JS 코드 섹션을 정의하는 한 가지 방법이라는 것을 지적하고 있습니다. 즉시 실행되는 기능을 사용할 수있는 시점을 이해하지 못한다고 하시겠습니까? 아니면 요점을 놓치고 있습니까? –

답변

2

제 생각에 당신은 javascript "팩토리 함수"와 생성자 함수 사이의 차이점에 대해 명확하지 않습니다. 나는 보통 Addy Osmani의 책이나 this article에 따라 "immediately-invoked function expression"또는 IIFE라는 문구를 보았습니다. 그러나 IEFF는 동일한 구조에 대한 참조라고 생각합니다.

(function() { return {};})(); 

그것은 기본적으로 자바 스크립트 (/ 해킹) 함수 범위를 만들 따라서 약간의 노출을 통해 당신이 제어 할하는 데 사용 패턴하지만 그 내의 모든 개체를이다 : IEFF (그들의 용어를 사용)에서이 기본 공식을 가지고 발신자에게 범위. "팩토리 함수"를 생성자 함수와 혼동하지 마십시오. 당신은 IIFE와 함께 new 키워드를 사용하지 않지만 전통적인 자바 스크립트 생성자 기능을 사용합니다. 생성자 함수는 객체 인스턴스를 만드는 것에 관한 것이고 일반적으로 고유 한 상태를 가진 많은 인스턴스를 만듭니다. 팩토리 함수는 깔끔하게 캡슐화 된 모듈을 생성하는 데 도움이되며 일반적으로 한 번만 호출하면 전체 응용 프로그램 수명 동안 단일 모듈 인스턴스에 대한 참조 만 얻을 수 있습니다.

0

당신은이 즉시 실행 공장 기능의 예입니다 Why AMD

(function() { 
    var $ = this.jQuery; 
    this.myExample = function() {}; 
}()); 

에서 다음 예제 코드를 볼 수 있습니다. 따라서이 함수는 해석 시점에 실행됩니다. JQuery를 사용하기 때문에이 예제 앞에 JQuery를로드하는 것을 고려해야합니다. 우리 주문에 따라 필요한 JavaScript 파일을로드하는 것은 RequireJS의 작업입니다.