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 回答