2013-08-02 51 views
0

我的項目中有三個js文件,每個文件中有大約15個函數重複。 他們是有用的功能。 爲了避免這種重複,我用$ .extend:使用jquery創建一個包含函數的對象擴展

$.extend({ 
    myFunction1 : function(){}, 
    myFunction2 : funciton(){},...and so on 
}); 

這種方式完美地工作,我能夠調用$ .myFunction1()在js文件的任何地方。

但是,我想創建一個包含所有這些實用功能的對象。所以,我的另一種方法是像

MyApp = { 
    myFunction1 : function(){}, 
    myFunction2 : funciton(){}, ... and so on 
} 

,我能叫MyApp.myFunction1()在3個文件的任何地方,MyApp的是一個全局變量。

但我不想讓它成爲一個全局變量。我想要的是我可以在我的代碼中的任何地方撥打$ .MyApp.myFunction1()。有沒有辦法做到這一點?

回答

0

據我所見,唯一明智的選擇是全局對象。如果你想訪問任何地方它需要是全球性的。

如果你看大多數實用程序庫,例如http://underscorejs.org/,你會看到相同的東西。他們使用一個全局命名空間(類似於你的MyApp對象),它被命名爲'_'。

如果您嘗試將函數分別添加到每個對象,您將在內存中爲每個對象複製它們,這是浪費。

相關問題