2014-06-06 2 views
4

어떻게 내가이에서 갈 수있는 생성자 내부에서 자신을 전달할 수 있습니다 이것에자바 스크립트는

var abc = (function(){ 
    .. 
})(); 

register(abc); // outside the protected class 

을 (클래스 외부 레지스터를 호출 whithout) :

function register(object){ stores the object } 

var abc = (function(){ 
    ..  

    register(this); // inside the protected class 
})(); 

일부 배경.

마스터 클래스에는 'register'기능이 플러그인을 배치하는 플러그인 객체 배열이 있습니다. abc는 그러한 플러그인이 될 것입니다. 모듈 patern 클로저를 따르는 플러그인. 나는 목록에 플러그인 인스턴스를 배치하고 가능한 한 자체 포함 된 플러그인이되고 싶습니다. 플러그인 외부의 추가 기능을 제거하고 싶습니다.

내가 생각한 : MasterClass.plugins.abc = (function ..) 그러나 이것은 어떤 플러그인이로드되기 전에 인스턴스화 될 MasterClass.plugins에 대한 종속성을 생성한다고 생각합니다.

+3

이 외모 : 귀하의 경우

(function(){ var fun = function(){ alert(this.toString())} fun.bind(fun)(); })() 

어색한. abc와 레지스터 사이의 연결을 줄이려면 최소한 등록 함수를 생성자에 전달해야합니다 ("injection"이라고 생각하십시오). – Makkes

+0

오른쪽 수식의 계산이 완료 될 때까지 할당이 수행되지 않으므로 IIFE * abc * 내부의 아무 곳이나 정의되지 않습니다. – RobG

+0

아마도 당신이 원하는 것에 대해 더 설명 할 수 있을까요? –

답변

0

이 같은 내부와 VAR합니다 ( 값을 수정할)) Function.prototype.bind을 (사용할 수 있습니다

(function(){ 
var fun = function(){ alert(this.toString())} 
register(fun); 
})()