2013-09-26 69 views
0

我在運行時用JavaScript創建了一個具有動態屬性的對象。創建動態對象(作爲函數(...))

它僅僅就是這樣::

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到n值的屬性...?

我知道,我會更好地實現一個列表或數組,但我想知道,如果有我的問題的解決方案?

感謝您的幫助。

+1

你可以創建你'NewObject'內的陣列?例如,'this.vals = array();對於(i = 0; i

+1

如何克隆一個對象,按照[這個答案](http://stackoverflow.com/questions/122102/most-efficient-way-to-clone-an-object) – CodingIntrigue

+0

感謝您的提示。我'var newInstance = jQuery.extend({},對象);'在我的情況下工作。但我會嘗試@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