深度克隆封装
function myClone(origin, target) {
const newtarget = target || {};
const toStr = Object.prototype.toString;
const arrStr = '[object Array]';
for (let key in origin) {
if (origin.hasOwnProperty(key)) {
if (typeof origin[key] == 'object' && origin[key] !== null) {
newtarget[key] = toStr.call(origin[key]) == arrStr ? [] : {};
myClone(origin[key], newtarget[key]);
} else {
newtarget[key] = origin[key];
}
}
}
return newtarget;
}
const obj = {
a: 'abc',
b: {
b1: [1, 2, 3, 4, 5],
b2: 'xyz',
},
c: [9, 8, 7, 6, 5],
d: {
d1: function () {},
d2: {
dd1: 'test',
dd2: {
ddd1: 'demo',
},
},
},
};
const obj1 = myClone(obj);
console.log(obj1);