Динамическое добавление параметров в качестве свойств объекта - JavaScript - PullRequest
4 голосов
/ 02 марта 2012

У меня есть функция конструктора, которую можно использовать для создания экземпляра нового объекта Button.При создании этого объекта вам может быть достаточно функции с одним аргументом.Если этот аргумент является ассоциативным массивом, все значения массива становятся свойствами объекта Button.

Итак, я пытаюсь сделать следующее:

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} будет динамически создавать кнопку со свойством test со значением true.

Это означает, что button.test = true не вариант.Это должно быть динамично.

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

И this.arg = args[arg], очевидно, не будет работать

this[arg] = args[arg]
0 голосов
/ 02 марта 2012

Это

Функциональная кнопка (аргументы) { for (arg in args) { this [arg] = args [arg]; } };

var button = новая кнопка ({ название: "Моя кнопка", значение: «Моя супер особая ценность», черный цвет", включено: ложь });

...