调用名称存储在变量中的函数
这个问题在这里已经有了答案:
调用函数使用
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