动态调用范围函数

时间:2017-04-24 13:06:16

标签: javascript

在Javascript中,您可以创建并调用函数:

function test_1(){ console.log(1); }
window['test_1']() // --> 1

但是,我当前的代码是作用域:

(function(){
    function test_1(){ console.log(1); }
    window['test_1']() // --> not a function 
})();

...使任何创建的函数不被绑定到窗口级别,而是绑定到特定的范围级别。

如何在范围内创建函数,然后动态*调用该函数?

*动态地表示我可以用变量动态改变字符串,例如窗口['测试_' +索引]()

2 个答案:

答案 0 :(得分:1)

全局变量成为window对象的属性。

非全局变量不会自动成为任何对象的属性。

你不能这样做。

考虑明确地将该函数作为对象的属性。

(function(){
    var functions = {};
    functions.test_1 = function test_1(){ console.log(1); };
    functions['test_1']();
})();

答案 1 :(得分:-1)

要从范围内调用范围函数,只需按名称调用它(不要使用窗口):

(function(){
    function test_1(){ console.log(1); }
    test_1();
})();

要从作用域外部调用作用域函数,需要将其导出到调用作用域中:

var scope = (function(){
    function test_1(){ console.log(1); }
    return {
        test_1: test_1
    };
})();

scope.test_1();