我需要将调用的字符串转换edos.desktop为包含主函数的变量,它需要如下所示:
edos.desktop = {
main: function() {
. . .
},
};
Run Code Online (Sandbox Code Playgroud)
我需要这样调用该函数:
var package = "edos.desktop";
. . .
package.main();
Run Code Online (Sandbox Code Playgroud)
但如何呢?
我尝试使用,window[package].main();但这不起作用!
我测试过:
alert(window[package]);
Run Code Online (Sandbox Code Playgroud)
它显示未定义,并且:
alert(window[package].main());
Run Code Online (Sandbox Code Playgroud)
不显示警报...
请帮我!!!
...而且我不需要 API
如果您可以控制字符串,则可以冷使用eval并视为package字符串。
var edos = {},
package = "edos.desktop";
edos.desktop = { main: function() { console.log('main'); } };
eval(package).main();Run Code Online (Sandbox Code Playgroud)
或者采用窗口对象并减少分割的名称空间。
function getValue(object, path) {
return path.split('.').reduce((o, k) => (o || {})[k], object);
}
var edos = {},
package = "edos.desktop";
edos.desktop = { main: function() { console.log('main'); } };
getValue(window, package).main();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |