2013-08-06 80 views
0

我使用jquerys getScript动态加载了一些javascript模块。我希望能够调用所有模块都具有的init方法。模块是动态加载的,所以我宁愿不要硬编码名称。有没有可能在不使用构造函数的情况下调用init?如何在不知道名称的情况下调用JavaScript匿名对象?

$.getScript("/mydynamicmodule.js", function (data, textStatus, jqxhr) { 

       myModuleName.init()   

      }); 
+0

你的模块是什么样的?你有什么功能来“启动”模块? – putvande

+1

如果你不知道该模块,你必须提供一个模块自己注册的API(例如,通过它的init函数) – Bergi

+0

你不能只是调用模块代码中的init方法吗? “不知名”的“ – Martin

回答

1

去关一下萨默尔认为,你已经为模块位置的字符串,例如“/mydynamicmoudle.js”。我不知道你是如何得到这个字符串(例如,你从什么地方加载它,等),但你可以尝试沿着线的东西:

function openModule(name) { 
    $.getScript("/"+name+".js", function (data, textStatus, jqxhr) { 
     window[name].init(); 
    } 
} 

这里假设你的模块有一个别名,可以从你的文件名得到。

0

如果你有全局命名空间(window)你的模块的名字,那么你可以试试这个:

window['myModule'].init(); 
+5

” – Quentin

相关问题