常见的深拷贝方法:
- JSON方法(
缺点:不能拷贝函数
) - lodash插件(lodash.cloneDeep())
- 手写深拷贝函数
本文主要介绍深拷贝函数,上代码:
function deepColone(obj) {
if (!obj || typeof obj !== 'object') return obj;
let newObj = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepColone(obj[key]) : obj[key];
}
}
return newObj;
}
let testObj = {
name: 'test',
age: 20,
likes: ["唱歌", "跳舞", "敲代码"]
};
let coloneObj = deepColone(testObj);
coloneObj.age = 18;
console.log('原来的:' + testObj.age); //原来的:20
console.log('克隆的:' + coloneObj.age); //克隆的:18