在一个项目中有用到d3.js画力导向图,用从后端获取到的同一个数据画出两个不同的力导向图(乱序版和分上下游企业版本),但奇怪的是,虽然变量什么的都设置的不同的名称,没有冲突,但两个力导向图感觉还是有互相影响的部分,比如力导向图A会出现节点与边分离的场景,后来经过分析,发现是由于两个使用了同一个数据,没有开辟新的存储空间,导致指向了同一个地址的数据,后加进来的力导向图B对数据的设置覆盖了A对数据的设置,因此,需要拷开辟一个新的存储空间,即进行JS深拷贝。深拷贝代码如下(拷贝对象数组):
var objDeepCopy = function (source) {
var sourceCopy = {};
for (var item in source) sourceCopy[item] = source[item];
return sourceCopy;
}