1

私は静的な内部関数を持っています:

function A() {

}

A.B = function() {

}

以下を使用して内部静的関数の関数オブジェクトを作成できません。

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

一方

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

&

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

ウィンドウを使用して静的内部関数オブジェクトを作成する方法を知っている人はいますか?

4

1 に答える 1

3

A.BのプロパティではありませんwindowAは のプロパティでwindowあり、Bは のプロパティですA。したがって、何らかの奇妙な理由で本当にこれを括弧で行いたい場合は、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()
于 2013-04-25T03:18:49.593 に答える