2012-03-02 38 views
4

私は、新しいButtonオブジェクトをインスタンス化するために使用できるコンストラクタ関数を持っています。このオブジェクトを作成するときは、1つの引数を持つ関数で十分です。この引数が連想配列の場合、配列のすべての値はButtonオブジェクトのプロパティになります。オブジェクトのプロパティとしてパラメータを動的に追加する - JavaScript

それでは、私がやろうとしているが、これは何をすべきこの

function Button(args){ 
    for (arg in args) 
    { 
     //Add the name of arg as property of Button with arg as value. 
    } 
}; 

var button = new Button({ 
        name:"My button", 
        value:"My super special value", 
        color:"black", 
        enabled:false 
      }); 

であることは、このようなボタンオブジェクトを作成することです。

button.name  //should be "My button" 
button.value  //should be "My super special value", 
button.color  //should be "black", 
button.enabled //should be false 

アソシエーションを取得した場合は文字列であるため、これを達成する方法がわかりません。そして、this.arg = args [arg]は明らかに動作しません。

注:入力は配列でなければならず、ユーザが引数として他の連想配列を合計すると、プロパティは異なります。 {test:true}は、値がtrueのテストプロパティを持つボタンを動的に作成します。

つまり、button.test = trueはオプションではありません。動的でなければなりません。

答えて

5

そしてthis.arg = args[arg]は、明らかにこの

機能ボタン(引数のArg)のために(引数){ { この[引数] =引数[引数

this[arg] = args[arg] 
+0

ありがとうございます、私はこの簡単な答えでは少し恥ずかしいです。 –

+0

@Rick Hovingあなたはこの問題に遭遇する唯一の人ではない、恥ずかしいはずはありません。 – Bram

0

を動作しません。 ]; } };

VARボタン=新しいボタン({ 名: "マイボタン"、 値: "私のスーパー特別な値"、 色: "黒"、 が有効になって:偽 });

関連する問題