2013-07-16 2 views
2

Java Script의 모듈 패턴에 대한 코드 프로젝트의 작은 기사를 읽었습니다. 자바 스크립트 코드를 읽은 후 코드가 작성된 방식이 명확하지 않습니다. 나는 자바 스크립트를 썼지 만, 나는 사전에 자바 스크립트를 작성하는 것에 익숙하지 않다. 여기에 내가 CodeProject의 http://www.codeproject.com/Articles/619747/Module-Pattern-in-Java-Script-in-DepthJavaScript의 모듈 패턴에 관한 정보

1)에서 읽은 URL을 추가 할 수

을위한 새로운 기능을 생성하는 기능은 //입니다
function addGenerator(num) { 
    // Return a simple function for adding two numbers 
    // with the first number borrowed from the generator 
    return function (toAdd) { 
     return num + toAdd 
    }; 
} 
// addFive now contains a function that takes one argument, 
// adds five to it, and returns the resulting number 
var addFive = addGenerator(5); 
// We can see here that the result of the addFive function is 9, 
// when passed an argument of 4 
alert(addFive(4) == 9); // Which return true 

addGenerator 후 5 인수로 전달되었지만 난 그냥 이렇게 호출 어떻게 작동하는지이 줄을 이해하지 못합니다.

return function (toAdd) { 
     return num + toAdd 
    }; 

addGenerator (5)는 무엇을 반환할까요?

이것이 true를 반환하는 방법 -> alert (addFive (4) == 9); // true를 돌려

2)

위의 코드는 &가 호출됩니다 작동 방법
var EmployeeModule = (function (my) { 
       my.anotherFunction = function() { 
        return alert('this is another function.'); 
       }; 
      } (EmployeeModule)); 

? 그들이하려는 일에 대해 상세하게 expalin 해주시겠습니까? 난 그냥이 라인 (EmployeeModule || {}))을 이해하지 못하는

var EmployeeModule = (function (my) { 
    // add functionality... 
    return my; 
}(EmployeeModule || {})); 

3)이 라인의 의미를 설명해주십시오.

4) 모듈 패턴

글로벌 가져 오기 우리는 또한 우리가 하위 모듈을 만들 수 많은 경우가 있습니다

(function ($, Y) { 
    // now have access to globals jQuery (as $) and YAHOO (as Y) in this code 
}(jQuery, YAHOO)); 

Sub-modules in Module Pattern 

우리의 모듈에서 다른 자바 스크립트 라이브러리를 가져올 수 있습니다. 일반 모듈을 만드는 것과 같습니다. 접기 | 코드 복사가

EmployeeModule.subModule = (function() { 
    var my = {}; 
    // ... 
    return my; 
}()); 

나은 설명에 더 예를 현명 위의 코드 포인트에 대한 좋은 설명을 찾고. 감사합니다

+0

타입 주조, 단락 연산자, 즉시 호출 된 함수 식 (IIFE), 클로저, 고차 함수 및 부분적 응용 프로그램과 같은 모든 코드를 이해하는 데 필요한 개념이 있다고 생각합니다. – elclanrs

답변

0

자주 모듈 패턴을 사용하지 않으므로이 주제에 대한 모든 질문에 답변 할 수 없습니다. 질문에 대한 답변을 원합니다 EmployeeModule || {}

모듈 패턴을 사용하지 않는 일반적인 의미에서의 의미를 이해하는 것이 더 쉽다고 생각합니다. 이걸 고려하세요.

var foo = foo || {};

foo가 이미 존재하는지 확인하고 있습니다. 그렇다면 덮어 쓰지 않고 그냥 그 자체와 동일하게 설정합니다 ...

var foo = {bar:'value'}; 
var foo = foo; 

foo는 존재하지 않는다면, 우리는이 같은 새로운 개체를 만드는 :

var foo = {};

그래서, 코드가 말한다 "를 foo는 이전과 동일이와 같은 foo (이미 foo가 이미있는 경우) 또는 새 객체 (foo가 이미 무언가가 아닌 경우) "

예에서 EmployeeModule || {}은 즉시 호출 된 함수 표현식에 my이라는 매개 변수로 전달됩니다. EmployeeModule이 무언가라면 my으로 설정됩니다. EmployeeModule이 아무것도 아닌 경우 my의 값은 새 개체입니다.