引用类型如果直接将它赋值给另一个变量,由于这两个引用指向同一个地址,这时改变其中任何一个引用,另一个会受到影响,使用深拷贝可以解决这个问题
递归方法
function deepClone(data){ var type = Object.prototype.toString.call(data); var obj; if(type === 'array'){ obj = []; } else if(type === 'object'){ obj = {}; } if(type === 'array'){ for(var i = 0, len = data.length; i < len; i++){ obj.push(deepClone(data[i])); } } else if(type === 'object'){ for(var key in data){ obj[key] = deepClone(data[key]); } } return obj; }