0

JavaScript コードの最適化に関するGoogle 開発者の記事では、「クラス メソッドの定義」セクションで、prototype を使用して関数 (JavaScript ではオブジェクトと見なされる) にプロパティとしてメソッドを追加することを推奨しています。

たとえば、関数コンストラクタ本体内でメソッドを次のように定義する代わりに、次のようにします。

baz.Bar = function() {
// constructor body
this.foo = function() {
// method body
};
}

メソッドは、次のようにプロトタイプを使用して定義する必要があります。

baz.Bar = function() {
// constructor body
};

baz.Bar.prototype.foo = function() {
// method body
};

しかし、クラス メソッドを追加し、d3.js などのフレームワークで使用される再利用可能な JavaScript コードを作成して、JS クロージャーに基づくコア メソッドを実装する別のアプローチを見てきました。たとえば、次のようになります。

var nameSpace = {}; 
nameSpace.myModule = function(module){

   var myVar = ''; 

   function exports(){

   }

   //getter and setter for myVar 
   exports.myVar = function(_x){
       if(!arguments) return myVar; 
       myVar = _x; 
       return this; // to allow for method chaining 
   }

   exports.method1 = function(){
     //do something 
   }

   exports.method2 = function(){
     //do something 
   }

   return exports;

 }

and then to use the module:
var test = nameSpace.myModule(); 
test.method1(); 

この最後のアプローチは、JavaScript コードのパフォーマンスと再利用に対する答えになるでしょうか。

よろしくお願いします モハメド・アリ

4

1 に答える 1

0

ユーザーとして、使用しないメソッドやクラスがモジュールに多数含まれていると、モジュールによってパフォーマンスが低下します。少数のメンバーだけが必要な場合は、完全なモジュールをインポートするのではなく、それらをクラスとして個別に作成することをお勧めします。

ブラウザーとしては、モジュールと名前空間の初期化にわずかな計算オーバーヘッドがあり、追跡にメモリ オーバーヘッドがありますが、モジュールの外部にあるクラスとクラス メソッドの同等のセットと大きく変わらない可能性があります。

ライターとして、ユーザーが通常すべてのメンバーを必要とすると思われる場合は、コードをモジュールに編成することをお勧めします。25個の未加工のコンポーネントまたはそれらすべてを含む1つのモジュールよりも、いくつかの関連コンポーネント(「パッケージ」)を含むいくつかのモジュールを使用する方がよい. この使いやすさと理解のしやすさ、名前空間への区分化 (他の名前空間と競合することなく意味のある名前を使用できるようにする)、および関連するクラスと関数をさまざまなモジュールにグループ化することが、フレームワークで通常使用される理由です。モジュールごとにほとんどのコンポーネントを使用する可能性があります。

于 2013-09-20T08:42:04.143 に答える