调用名称存储在变量中的函数

这个问题在这里已经有了答案:

  • 当我的名字作为字符串29答案时如何执行JavaScript函数

  • 调用函数使用

    Module[str]();
    

    由于Module是一个对象,因此可以使用括号表示法来访问它的动态属性和方法。

    (function() {
      var Module = (function() {
        var fctToCall = function() {
          console.log('Foo');
        };
        return {
          fctToCall: fctToCall
        };
      })();
      var Module2 = (function() {
        var init = function() {
          var str = 'fctToCall';
          
          // Call as
          Module[str]();
        };
        return {
          init: init
        };
      })();
    
      Module2.init();
    })();

    更换:

    var init = function () {
        var str = 'fctToCall';
        Module.str(); // here
    };
    

    附:

    var init = function () {
        var str = 'fctToCall';
        Module[str](); // here
    };
    

    这里, str被用作键来访问Module上的fctToCall函数。

    然后你可以在你的IIFE中调用Module2.init()

    (function() {
      var Module = (function() {
        var fctToCall = function() {
          document.write('Foo'); // (alert is broken in snippets)
        };
        return {
          fctToCall: fctToCall
        };
      })();
      var Module2 = (function() {
        var init = function() {
          var str = 'fctToCall';
          Module[str](); // Access & call `fctToCall`.
        };
        return {
          init: init
        };
      })();
      Module2.init(); // Call `init`.
    })();

    由于JS中的所有东西都是对象,所以可以使用对象表示法。

    Module[str]();
    
    链接地址: http://www.djcxy.com/p/94825.html

    上一篇: Call a function whose name is stored in a variable

    下一篇: Call javascript function which name is in variable