2012-03-02 86 views
4

我有一個構造函數可用於實例化一個新的Button對象。當創建這個對象時,你可以用一個參數來滿足函數。如果此參數是關聯數組,則該數組的所有值都將成爲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]顯然是行不通的

this[arg] = args[arg] 
+0

謝謝!我對這個簡單答案感到有些尷尬。 – 2012-03-02 10:15:05

+0

@Rick Hoving你不應該感到尷尬,你不是唯一遇到這個問題的人哈哈;) – Bram 2014-02-26 15:13:59

0

的(在args ARG){ 這個[參數] = ARGS [參數此

功能按鈕(參數){ ]。 } };

VAR按鈕=新按鈕({ 名: 「我的按鈕」, 價值: 「我的超級特殊價值」, 色: 「黑」, 啓用:假 });