首页 > 解决方案 > 将字符串转换为变量对象

问题描述

我需要将调用的字符串转换为edos.desktop包含主函数的变量,它需要是这样的:

edos.desktop = {
    main: function() {
        . . .
    },
};

我需要像这样调用函数:

var package = "edos.desktop";
. . .
package.main();

但如何?

我尝试使用window[package].main();,但这不起作用!

我测试过:

alert(window[package]);

它显示未定义,并且:

alert(window[package].main());

不显示警报...

请帮我!!!

...而且我不想要 API

标签: javascript

解决方案


如果您可以控制字符串,则可以冷使用evalpackage作为字符串。

var edos = {},
    package = "edos.desktop";

edos.desktop = { main: function() { console.log('main'); } };

eval(package).main();

或者取window对象,减少分割的命名空间。

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();


推荐阅读