原理:
在JavaScript中,基础类型值的复制是直接拷贝一份新的一模一样的数据,这两份数据相互独立,互不影响。
/**
* 深拷贝 递归实现
* @param {Array | Object} data 需要拷贝的对象
* @returns {Array | Object} newData 拷贝后的对象
*/
function deepCopy(data) {
var newData = null;
//通过typeof判断是否为引用数据类型且不等于null 注意typeof (null)===object
if (typeof (data) === 'object' && data !== null) {
// 三元表达式 来判断储存的类型
newData = data instanceof Array ? [] : {};
//循环obj 中的每一项,如果里面还有复杂数据类型,则直接利用递归再次调用deepCopy函数
for (let key in data) {
newData[key] = deepCopy(data[key]);
}
// 为基本数据类型就直接赋值
} else {
newData = data
}
return newData
}