2017-09-26 5 views
1

私のAgularJsプロジェクトでは、プロジェクトのさまざまな部分でサーバー機能が必要です(たとえば、特別な方法で配列を並べ替えたり、値を特別な方法で比較するなど)。

私のアプリにはすでに非常に多くのサービスがあるので、私はプロジェクトのあらゆる部分でこれらの機能を利用できるように別のサービスを使用することを躊躇しています。

だから私はすべてのコントローラ、サービス、または任意で

var sortedArray = $.myHelperFunctions.sortMyArrayInThatSpecialWay(unsortedArray); 

を使用する

$.extend({ 
    myHelperFunctions : { 
     sortMyArrayInThatSpecialWay: function(array) { 

      ... 
      return sortedArray; 
     }, 
     ... 
    } 
}); 

のようなカスタム関数でjQueryの名前空間を拡張するためにその可能その方法を$.extendを使用するアイデアを思い付きました私のアプリケーションでは、サービスを注入する必要はありません。

今私の質問です:その良い練習ですか?そうでない場合は、なぜですか?

+0

なぜそれが悪いのでしょうか?私はjQueryが実際にそれを奨励していると思います。例えば:https://learn.jquery.com/plugins/basic-plugin-creation/#accepting-options – AVAVT

+0

私はあなたがこの記事を読むことを望みたいと思います。(https://stackoverflow.com/question/2609951/jquery-fn-extend-bla-function-vs-jquery-fn-bla) –

+0

このように '$ .extend'を使うことは何も問題ありません。実際、 'jQuery.fn.extend'はjQuery自体のプロトタイプの内部で' jQuery.extend'を内部的に呼び出します。プロパティの宣言との違いは決して目立たないでしょう。 – adeneo

答えて

0

パフォーマンスが賢明、jQuery.extendは直接だから、関数を定義し、そのように使用する方が良いでしょうjQuery.fn.foo = function(){ };

のような関数を宣言するよりも遅くなるだろう。ここで

は、私は私の答えをサポートするために提供することができます小さな例です。

jQuery.log = function(message) { 
    // log somewhere 
}; 

$.log("much better"); 
関連する問題