2012-03-19 75 views
0

我有一個聲明如下面的對象的東西:連鎖樣式的JavaScript複製對象

var seriesOptions = { 
y: 99 
}; 

在我的代碼我一直在創造增加新的對象,並添加爲一個屬性來seriesOptions對象:

drilldown = { 
x: [90,20,40] 
} 
categories = { 
z: [20,30,40.50] 
} 
values = { 
p:[30,50,60] 
} 

然後:

seriesOptions['drilldown'] = drilldown 
seriesOptions.drilldown['categories'] = categories; 
seriesOptions.drilldown['values'] = values; 

其中鑽取,類別和值是另一個目的

現在我要複製試圖複製seriesOptions對象到另一個陣列seriesOpts像一個鍊形式

if(seriesOpts.length == 0) 
    seriesOpts.push(seriesOptions); 
else 
    seriesOpts[seriesOpts.length - 1].drilldown = $.extend(true, {}, seriesOptions); 

這意味着新seriesOptions將根據最後seriesOptions.drilldown對象被鏈接。

我的問題是,我沒能看到

seriesOpts [seriesOpts.length - 1] seriesOptions.y值.drilldown

對象?我期待像下面的東西:

seriesOpts [X] .Y:99

seriesOpts [X] .drilldown.y:99

請讓我知道我做錯了什麼在我的代碼?

注意我使用$ .extend將對象複製到新的。那麼,如何保留舊的和新的值,如:seriesOpts [x] .y和seriesOpts [x] .drilldown.y都可以訪問?

在此先感謝。

+0

權。長度)'因爲seriesOpts被定義爲對象,長度可能包含原型函數。 – 2012-03-19 04:26:40

+0

console.log在該級別顯示正確的值 – Prakash 2012-03-19 04:32:35

+0

''''''''''''''''''''''''''' 「對象。並且永遠不會有多個'seriesOpts [0] .drilldown.drilldown'。所以你只能在第一次迭代之後訪問'seriesOpts [0] .y'並在所有後續(2+)迭代之後訪問'seriesOpts [0] .drilldown.y'。 – RobG 2012-03-19 06:31:33

回答

0

我覺得這else塊是錯誤的

$.extend(true, {}, seriesOptions); 

它之前`如果(seriesOpts.length == 0)`做了`的console.log(seriesOpts應該使用這個

$.extend(true, {}, seriesOptions.drilldown); 
+0

我也試過這種方式,但沒有得到所需的目標 – Prakash 2012-03-19 04:37:47