2013-08-06 2 views
0

Я загружаю некоторые модули javascript динамически, используя jquerys getScript. Я хотел бы иметь возможность затем вызвать метод init, который имеет все модули. Модули загружаются динамически, поэтому я бы предпочел не записывать имена. Можно ли как-то вызвать init без использования конструктора?Как назвать анонимный объект javascript, не зная названия?

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

       myModuleName.init()   

      }); 
+0

На каких модулях вы выглядите? И какая функция вам должна «инициализировать» модули? – putvande

+1

Если вы не знаете модуль, вы должны предоставить api для регистрации модуля (например, передав вам функцию 'init') – Bergi

+0

Не можете ли вы просто вызвать метод init в коде вашего модуля? – Martin

ответ

1

Уходя из того, что предложил Samer, у вас уже есть строка для расположения модуля , например, "/mydynamicmoudle.js". Я не знаю, как вы получаете эту строку (то есть, вы загружая его откуда-то, и т.д.), но вы можете попробовать что-то вдоль линий:

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

Это предполагает, ваш модуль имеет псевдоним, который может быть полученным из вашего имени файла.

0

Если у вас есть имена модулей в глобальном пространстве имен (window), то вы можете попробовать это:

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

«не зная названия» – Quentin

Смежные вопросы