一、乞丐版
JSON.parse(JSON.stringify(obj)) 无法拷贝 undefined、function、RegExp 等类型。
let obj1 = {a:1,b:2,c:3}let obj2 = JSON.parse(JSON.stringify(obj1));
二、单层对象可拷贝
无法深度拷贝引用类型
let obj1 = {a: 1,b: 2}let obj2 = Object.assign({}, obj1);
——————————————————以下为深拷贝————————————————-
三、深拷贝之递归拷贝
需要2-4层判断: 【引用对象】 - 【基本数据】 【数组~循环递归、简单引用类型~循环递归、null~直接赋值、RegExp~直接赋值】 - 【基本数据-直接赋值】
deepClone(target) {let result;if(typeof target === "object") {if(Array.isArray(target)) {result = [];for(let i in target) {result.push(deepClone(target[i]))}} else if (target === null) {result = null;} else if (target.constructor === RegExp) {result = target;} else {result = {};for(let i in target) {result[i] = deepClone(target[i])}} else {result = target}return result;}
