0

私のプロジェクトには 3 つの js ファイルがあり、各ファイルで約 15 個の関数が繰り返されています。それらは一種のユーティリティ関数です。この繰り返しを避けるために、 $.extend を使用しました:

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

このアプローチは完全に機能し、js ファイルのどこでも $.myFunction1() を呼び出すことができました。

しかし、これらすべてのユーティリティ関数を含むオブジェクトを作成したかったのです。だから私の他のアプローチは次のようでした

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

MyAppはグローバル変数であるため、3 つのファイルのどこでも MyApp.myFunction1() を呼び出すことができました。

しかし、私はそれをグローバル変数にしたくありません。私が望むのは、コードのどこでも$.MyApp.myFunction1()を呼び出すことができることだけです。それを行う方法はありますか?

4

1 に答える 1

0

私が見る限り、賢明な唯一のオプションはグローバルオブジェクトです。どこからでも何かにアクセスしたい場合は、グローバルである必要があります。

ほとんどのユーティリティ ライブラリ( http://underscorejs.org/など) を見ると、同じことがわかります。それらは、「_」という名前のグローバル名前空間 (MyApp オブジェクトに似ています) を使用します。

関数を各オブジェクトに個別に追加しようとすると、オブジェクトごとにメモリ内で複製することになり、無駄になります。

于 2013-08-02T10:11:51.300 に答える