const my = {
a: {
a1: [1, 2, 3],
a2: () => {
console.log('hahahaha');
}
},
b: 'xc',
c: [9, 8, 7, { c1: 'arthur', c2: 1234 }],
[Symbol.for('xc')]: {
name: 'hahaha'
}
}
const deepClone = (obj) => {
if (typeof obj === 'object') {
let cloneObj;
if (obj instanceof Array) {
cloneObj = [];
} else {
cloneObj = {};
}
const props = Reflect.ownKeys(obj);
props.forEach((prop) => {
cloneObj[prop] = deepClone(obj[prop]);
});
return cloneObj;
} else {
return obj;
}
}
const newObj = deepClone(my);
newObj.a.a1.pop();
newObj.c[3].c1 = 'hsing';
newObj[Symbol.for('xc')].name = 'xxxxx';
console.log(newObj);
console.log(my);
javascript es6实现深度克隆
最新推荐文章于 2024-05-22 13:27:35 发布