2011-01-20 7 views
6
MyLibrary.MyModule = 
     (
      function initialise() { 
       this.id = id; 
       this.c = document.getElementById(id); 
       this.ctx = this.c.getContext('2d'); 

       this.properties = { 
        setup: { 
         backgroundColour: options.setup.backgroundColour || 'black' 
        }, 

        scale: { 
         show: options.scale.show || true, 
         colour: options.scale.color || 'white' 
        }, 
       } 
       console.log(properties.setup.baseFontSize); 
      } 
     )(id, options); 

내가자바 스크립트

new MyLibrary.MyModule('c',options); 

를 사용하여이 코드를하지만 'ID를'전화 드렸습니다에 폐쇄 함수에 매개 변수를 전달하고 옵션 정의되지 않은 것 같습니다.
누군가 도와 줄 수 있습니까?

+0

나는 (폐쇄없이) 이런 일을 시작하고 난 폐쇄로 기능을 리팩토링을 시도 거라고 생각했다. MyLibrary.MyModule = function initialise (id, options) { this.id = id; .. } – Abhijit

+1

리팩터를 사용하면 생성자를 * 할당하는 대신 * 생성자를 호출합니다. 일부 기본값으로 범위를 지정하려면 생성자를 호출 *하는 함수가 있어야합니다. 'MyLibrary.MyModule = (function (_id, _options) {함수 초기화 initialize (id, options) {/ * 함수 본문 * /};}) (id, options);' 이것이 그렇게하는 이유였습니다. – user113716

답변

5

MyLibrary.MyModuleundefined입니다. 이는 할당 할 반환 값이없는 익명의 함수를 호출하기 때문입니다.

내가 대신이 일을 의미 가정

MyLibrary.MyModule = function initialise(id, options) { 
      this.id = id; 
      this.c = document.getElementById(id); 
      this.ctx = this.c.getContext('2d'); 

      this.properties = { 
       setup: { 
        backgroundColour: options.setup.backgroundColour || 'black' 
       }, 

       scale: { 
        show: options.scale.show || true, 
        colour: options.scale.color || 'white' 
       }, 
      } 
      console.log(properties.setup.baseFontSize); 
     }; 

지금 당신이 할 수 있습니다

var inst = new MyLibrary.MyModule('c',options); 

... 그리고 'c'options는 생성자의 인수로받은 것입니다. 즉시 호출 함수 표현식에 대한 목적은 생성자가 참조 할 수있는 몇 가지 기본 값을 주변 닫 인 경우

는 다음 인생은 반환 그 값을 참조하는 기능에 필요합니다.

4

서면으로, 나는 그것이 당신이 원하는 것과 같은 것을 할 것이라고 생각하지 않습니다. 기본적으로 "MyLibrary.MyModule"을 초기화하고 있습니다. 그 "초기화"함수로 반환 값이 없으며 마치 그것을 가지고 있다고 가정합니다.

난 당신이 뭘 하려는지 알 수는 없지만 :

MyLibrary.MyModule = (function whatever() { /* ... */ })(id, options); 

수단을, ID가 "변수"인수 변수의 값으로 구성된 목록 기능 어떤 전화 " "options"을 선택하고 "MyLibrary"가 참조하는 개체의 "MyModule"속성을 해당 함수 호출에서 반환되는 값으로 설정합니다. "

연기가 나면 "MyLibrary.MyModule"은 내가 말할 수있는 한 기능이 아닙니다. 아마도 당신이 무엇을 설명한다면 을 의미하기 때문에 누군가가 그것을 고칠 수 있습니다.

0

당신은 이런 식으로 뭔가를 원하는 :

MyLibrary.MyModule = function(id, options) { 
    this.id = id; 
    this.c = document.getElementById(id); 
    this.ctx = this.c.getContext('2d'); 

    this.properties = { 
     setup: { 
      backgroundColour: options.setup.backgroundColour || 'black' 
     }, 

     scale: { 
      show: options.scale.show || true, 
      colour: options.scale.color || 'white' 
     }, 
    } 
};