我有以下脚本:
(function () {
var Module = (function () {
var fctToCall = function () {
alert('Foo');
};
return {
fctToCall: fctToCall
};
})();
var Module2 = (function () {
var init = function () {
var str = 'fctToCall';
Module.str(); // here
};
return {
init: init
};
})();
})();
Run Code Online (Sandbox Code Playgroud)
所以我想fctToCall通过它的名字来调用这个方法 - 我该怎么做?到目前为止,我知道3种方法:
我怎么解决这个问题?
Tus*_*har 15
调用功能使用
Module[str]();
Run Code Online (Sandbox Code Playgroud)
作为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();
})();Run Code Online (Sandbox Code Playgroud)
更换:
var init = function () {
var str = 'fctToCall';
Module.str(); // here
};
Run Code Online (Sandbox Code Playgroud)
附:
var init = function () {
var str = 'fctToCall';
Module[str](); // here
};
Run Code Online (Sandbox Code Playgroud)
这里,str用作访问fctToCall函数的键Module.
然后你可以Module2.init()在你的IIFE中打电话:
(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`.
})();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9180 次 |
| 最近记录: |