2016-10-03 8 views
-2

(角括弧を使用して)コンストラクタ関数にプロトタイプを適用する方法を教えてください。変数を評価するのではなく、変数名を返すので、私はドット表記法を使いたくないし、プロトタイプをより動的にしたい。以下は私が達成しようとしているものですが、私はそれを働かせることはできません。角括弧を使用したプロトタイプ(バニラJS解のみ)

var prototyper = function(constructor_name, prototype_name, data) 
{ 
    main[constructor_name][__prototype__][prototype_name] = new Function(data); 
} 

prototyper( "classify"、 "alert_classification"、 "alert(this.classification)");

+1

にそれらをミックスする必要があります。 – Bergi

+0

あなたは '__prototype__ ==="プロトタイプ "を使うか、' main [...] .prototype [...] = ... ' – Bergi

+0

を使っているようです。*私はドット表記*を使いたくありません。それはまさにあなたが実際に望んでいるようです。そして、あなたはそれを扱うためにあなたの機能を得ることができるだろうか? – Bergi

答えて

1

あなたは、変数のプロパティ(…[constructor_name]…[prototype_name])が、一定のプロパティ….prototypeためのドット表記するためのブラケット表記をしたいです。あなたは `新しいFunction`を使用することはほとんどないはずです

function prototyper(constructor_name, method_name, fn) { 
    main[constructor_name].prototype[method_name] = fn; 
} 

jsfiddle demo

関連する問題