2011-10-22 8 views
3

자바 스크립트 디자인 패턴 : 어떻게 하위 모듈 및 액세스 부모 모듈 개인 vars 및 함수를 만드는 방법

다음과 같은 내용이 있습니다.

mod.a = (function() { 
    var myPrivateVar = 'a'; 
    function myPrivateFct() { 
     //do something I will need in my sub-module (mod.a.b) 
    } 
    return { 
     //some public functions 
    } 
})(); 

mod.a.b = (function() { 
    // some local vars and functions 

    return { 
      mySubModuleFct:function() { 
       // here I want to call mod.a.myPrivateFct(); 
      } 
})(); 
mod.a = (function() { 
    var myPrivateVar = 'a'; 
    function myPrivateFct() { 
     //do something I will need in my sub-module (mod.a.b) 
    } 
    return { 
     //some public functions 
    } 
})(); 

mod.a.b = (function() { 
    // some local vars and functions 

    return { 
      mySubModuleFct:function() { 
       // here I want to call mod.a.myPrivateFct(); 
      } 
})(); 

하위 모듈을 만들고 부모 모듈 mod.a에서 개인 함수를 호출하고 싶습니다. 모듈 패턴의 우수 사례를 따르면서 어떻게해야합니까?

고마워, 데이비드

답변

0

:

http://ejohn.org/blog/simple-javascript-inheritance/

그것은 당신이 쓸 수 있습니다 :

var Person = Class.extend({ 
    init: function(isDancing){ 
    this.dancing = isDancing; 
    } 
}); 
var Ninja = Person.extend({ 
    init: function(){ 
    this._super(false); 
    } 
}); 

var p = new Person(true); 
p.dancing; // => true 

var n = new Ninja(); 
n.dancing; // => false 
+0

그럴 수도 있지만 실제로 찾고있는 것은 아닙니다. 나는 당신이 지정한 방법대로 상속을 사용할 수 있다는 것을 알고 있지만, 나는 현재 가지고있는 모듈을 다시 써야 할 것이다. 나는 또한 모듈 패턴을 따르기를 원한다. 누구? –

2

직장 동료가 나에게 보여준 방법 티. 실제로는 매우 우아합니다.

mod.a = (function() { 
    var myPrivateVar = 'a'; 
    function myPrivateFct() { 
     //do something I will need in my sub-module (mod.a.b) 
    } 
    return { 
     b: { 
      bPublicMethod:function() { 
       myPrivateFct(); // this will work! 
      } 
     } 
     //some public functions 
    } 
})(); 

//call like this 
mod.a.b.bPublicMethod(); // will call a.myPrivateFct(); 
+1

아, 네, 잘 모르겠 으면 http://yuiblog.com/blog/2007/06/12/module-pattern/에서이 체크를 읽으십시오. 직장 동료가 보여준 것을 설명해주십시오. – david