Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
链式Javascript复制对象_Javascript - Fatal编程技术网

链式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。如果我遗漏了你想说的话,请告诉我