2013-09-26 6 views
0

Я создаю объект с динамическими свойствами во время выполнения в JavaScript.create dynamic Object (as function (...))

Он просто работает так:

var object = { 
    'time' = "" 
}; 

После этого, я могу добавить больше свойств, например, так:

var propName = "value1"; 
object[propName] = "some content..."; 

Но мне нужно работать с реальным объект, так что я могу создать новый экземпляр, например: var myObject = NewObject ('myTime', 'myValue1', 'myValue2' ...);

Для создания статического пользовательского объекта, я хотел бы сделать это:

function NewObject(time, val1, val2, ... valn) { 
    this.time = time; 
    this.val1 = val1; 
    ... 
} 

Но я понятия не имею, как разработать такую ​​функцию динамически, в зависимости от различного пользовательского ввода моего NewObject может иметь от 1 до стоимостных свойств п ...?

Я знаю, мне было бы лучше реализовать список или массив, но я хотел бы знать, есть ли решение для моей проблемы?

Благодарим за помощь.

+1

вы можете создать массив внутри вашего 'NewObject'? Например, 'this.vals = array(); для (i = 0; i

+1

Как насчет клонирования объекта, в соответствии с [этот ответ] (http://stackoverflow.com/questions/122102/most-efficient-way-to-clone-an-object) – CodingIntrigue

+0

спасибо за подсказки. I 'var newInstance = jQuery.extend ({}, object);' работал в моем случае. Но я попробую решение @Passerby, потому что функция jQuery.extend может не работать в каждом браузере ... – wassermine

ответ

1

Вы можете использовать arguments объект внутри функции:

function NewObject(time){ 
    this.time=time; 
    if(arguments.length>1){ 
     for(var i=1;i<arguments.length;i++){ 
      this["val"+i]=arguments[i]; 
     } 
    } 
} 

JSFiddle