2015-03-11 3 views
1

У меня есть объект как пространство имен с тремя основными объектами. Я называю этот объект один раз, и после этого он работает для себя.Каков наилучший способ справиться с этой структурой JavaScript пространства имен?

Мой код структурирована следующим образом:

var Application = Application || {}; 
Application.Module1 = { 
//Code with some functions 
} 

Application.Module2 = { 
    //Code with some functions 
} 

Application.Module3 = { 
    //Code with some functions 
} 

(function(){ 
    Application.Module1.Start(); 
})(); 

В первую очередь модули работают между собой. Я хотел бы назвать, например, когда я нахожусь в Module1 функция в module2 нравится:

Module2.randomFunction(); 

и нет:

Application.Module2.randomFunction(); 

Но я думаю, что это плохая идея пойти

Application.Module1.Start.call(Application) 

потому что я использую также другие объекты, такие как jQuery.

Как вы думаете, что было бы правильным путем?

+0

Может быть, вы можете сделать что-то вроде этого: http://jsfiddle.net/v60h6vfd/. Не лучшее решение, но это сокращение, если вам нужно много раз вызывать некоторые функции Module2. – briosheje

ответ

0

Вы можете использовать шаблон, как это -

var Application = (function() { 
    var Module1 = { 
     function1 : function() { 
      console.log("function1"); 
      Module2.function2(); 
     } 
    }; 

    var Module2 = { 
     function2 : function() { 
      console.log("function2"); 
     } 
    }; 

    var Module3 = { 
     function3 : function() { 
      console.log("function3"); 
     } 
    }; 

    return { 
     Module1: Module1, 
     Module2: Module2, 
     Module3: Module3 
    } 
})(); 

Application.Module1.function1(); 
+0

Избегайте использования функций неконструктора. – Ben

+0

Да, я как бы следовал структуре, заданной вопросом. – jaibatrik

+0

О, хорошо, тогда – Ben

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