动态添加参数作为对象的属性 - JavaScript

问题描述:

我有一个构造函数可用于实例化一个新的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不是一个选项。它必须是动态的。

而且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

的(在args ARG){ 这个[参数] = ARGS [参数此

功能按钮(参数){ ]。 } };

VAR按钮=新按钮({ 名: “我的按钮”, 价值: “我的超级特殊价值”, 色: “黑”, 启用:假 });