【发布时间】:2020-09-01 22:39:38
【问题描述】:
我有一个对象:
nestedObj = {obj1:
{cat:'thing1',
scale: d3.scaleSequential(d3.interpolateGreens)},
...
}
然后我遍历一系列事物以创建在其他方面重复的对象:
things = ['thing1','thing2',...]
// A loop that creates:
nestedObj.obj2 = Object.assign({},nestedObj.obj1,{cat:thing2}}
然后在我的代码中,我迭代地设置每个函数的属性:
Object.keys(nestedObj)forEach(function(key){
nestedObj[key].scale().domain([0,number])
}
这导致 obj1.scale 被 obj2.scale 覆盖,我认为是因为该函数是浅拷贝。 jQuery.extend(true) 和 JSON.parse(JSON.stringify()) 似乎不起作用。有什么办法可以在不改变我的一般操作顺序的情况下解决这个问题吗?
谢谢!
【问题讨论】:
-
在下面查看我的答案的更新。我认为您设置和使用
scale的方式存在不同的问题。
标签: javascript d3.js