2013-04-25 2 views
1

나는 정적 내부 기능이 있습니다새 창에서 []

new window['A.B'](); //Does not work 

곳으로 : 내가 사용 내부 정적 기능의 함수 개체를 만들 수 없습니다입니다

function A() { 

} 

A.B = function() { 

} 

new window['A'](); //Works 

&

new A.B(); //Also works if I create inner static function object directly. 

누구든지 창을 사용하여 정적 내부 함수 개체를 만드는 방법을 알고 있습니까?

답변

3

A.Bwindow의 재산이 아닙니다. Awindow의 속성이고 BA의 속성입니다. 따라서 이상한 이유로 브래킷을 사용하여이 작업을 수행하려는 경우 new window['A']['B']()입니다.

개체의 모든 속성에 점으로 내림차순으로 액세스하려는 경우에는 기본 제공되지 않습니다.

function descend(obj, path) { 
    var parts = path.split('.'); 

    for(var i = 0; i < parts.length; i++) { 
     obj = obj[parts[i]]; 
    } 

    return obj; 
} 

// var B = descend(window, 'A.B'); 
// new B()