链式Javascript复制对象
我声明了一个对象,如下所示:链式Javascript复制对象,javascript,Javascript,我声明了一个对象,如下所示: var seriesOptions = { y: 99 }; 在我的代码中,我不断创建并添加新对象,并将其作为属性添加到SerieOptions对象: drilldown = { x: [90,20,40] } categories = { z: [20,30,40.50] } values = { p:[30,50,60] } 然后: 其中向下钻取、类别和值是另一个对象 现在我必须复制尝试将serieoptions对象复制到另一个数组serieopts中,就像
var seriesOptions = {
y: 99
};
在我的代码中,我不断创建并添加新对象,并将其作为属性添加到SerieOptions对象:
drilldown = {
x: [90,20,40]
}
categories = {
z: [20,30,40.50]
}
values = {
p:[30,50,60]
}
然后:
其中向下钻取、类别和值是另一个对象
现在我必须复制尝试将serieoptions对象复制到另一个数组serieopts中,就像以链式格式一样
if(seriesOpts.length == 0)
seriesOpts.push(seriesOptions);
else
seriesOpts[seriesOpts.length - 1].drilldown = $.extend(true, {}, seriesOptions);
这意味着新的SerieOptions将链接到last SerieOptions.drilldown对象下
我的问题是,我无法在中看到serieoptions.y值
seriesOpts[seriesOpts.length-1]。向下展开
反对?我期待着类似以下的事情:
var seriesOptions = {
y: 99
};
序列分[x].y:99
序列点[x]。向下展开。y:99
请让我知道我在代码中做错了什么
注意,我正在使用$.extend将对象复制到新对象。那么,我怎样才能同时保留旧值和新值,比如:seriespots[x].y和seriespots[x].drilldown.y是可访问的
提前谢谢。我认为这个
块是错误的
$.extend(true, {}, seriesOptions);
它应该用这个
$.extend(true, {}, seriesOptions.drilldown);
就在if(seriespots.length==0)
之前执行console.log(seriespots.length)
操作,因为seriespots被定义为对象,长度可能包括原型函数。console.log在该级别显示正确的值seriespots
将只具有长度0或1,因为如果长度为1,然后,seriesOpts[0]。向下钻取由一个新的“扩展”对象重新定距。而且永远不会有超过一个序列点[0]。向下钻取。向下钻取
。因此,您只能在第一次迭代后访问seriespots[0].y
,在所有后续(2+)次迭代后访问seriespots[0].y
。Firebug不会向我显示seriespots[0]。drilldown.y
值。当我以console.log(serieopts)的身份进行控制台日志记录时,它只显示serieopts[0].y
value。如果我遗漏了你想说的话,请告诉我