链式样式的Javascript复制对象

时间:2012-03-19 04:16:32

标签: 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;

其中,向下钻取,类别和值是另一个对象

现在我必须复制try以将seriesOptions对象复制到另一个数组 seriesOpts ,就像链式一样

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

意味着新的seriesOptions将链接在最后一个seriesOptions.drilldown对象下。

我的问题是我无法在

中看到seriesOptions.y值
  

seriesOpts [seriesOpts.length - 1] .drilldown

对象?我期待下面的事情:

  

seriesOpts [x] .y:99

     

seriesOpts [x] .drilldown.y:99

请让我知道我在代码中做了什么错误?

注意我使用$ .extend将对象复制到新对象。那么如何保留旧值和新值,如:seriesOpts [x] .y和seriesOpts [x] .drilldown.y可以访问?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为此else阻止错误

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

应该使用这个

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