2012-01-31 7 views
3

クラスのプロトタイプで設定するプロパティの設定をとる単純なワーカー関数を構築しようとしています。これ自体は、それぞれの時間を行うには面倒であり、私はこの「コンストラクタ」のボディのためのデザインパターンを希望:動的なjavascriptプロトタイプの拡張

// declaration of "constructor" to fill data members from passed object 
function MyClass (config) { 
    for (var key in config) 
     this[key] = config[key]; 
} 

注:

は、私はクラスのスタブとして機能関数を宣言したと。

はしかし、今、私は次のように動的にバッチで、この「クラス」のさまざまなプロトタイプのメンバーを設定したい:

ExtendPrototype(MyClass, { 
    func1 : function (arg1) { 
    }, 

    func2 : function (arg2) { 
    }, 

    ... 
}); 

それは本当に見て、クラスのように感じているこの方法です。

キーは次のように私がしようとした、グローバル関数ExtendPrototypeです:

function ExtendPrototype (cls, protoconfig) { 
    for (var key in protoconfig) 
     cls.prototype[key] = protoconfig[key]; 
} 

私の質問は、この作品は本当にさまざまなプロトタイプのメンバーを設定し、正確に内部の作業、オブジェクトとして「プロトタイプ」を処理することによって、意志でありますあたかもcls.prototype.myfunc = function()をいくつかのスタンドアロン文として設定したかのように?

または、私はExtendPrototype関数で "eval"と複雑に何かする必要がありますか?

私は既存のjavascriptライブラリがこのようなことをしていることは知っていますが、自分のコードでは単純なクラスアーキテクチャを作成しようとしています。

アンディ

答えて

1

予想通りこれは動作するはずです。ドット表記法でプロパティを設定する場合と、ブラケット表記で設定する場合には違いはありません。ここで

は、それを証明するフィドルです:http://jsfiddle.net/qrsNj/


P.S.ランダム関数の名前を大文字で始めるべきではありません。これは、オブジェクトコンストラクタ用に予約された規約で​​す。

関連する問題