深拷贝
function deepCopy(target, copys) {
const isObject = target => target instanceof Object;
if (isObject(target) && isObject(copys)) {
// 如果要拷贝的对象是个空对象直接返回原对象
if (!Object.keys(copys).length) {
return target;
}
let val;
for (let key in copys) {
val = copys[key];
if (!isObject(val)) {
target[key] = val;
continue;
}
// 创建对应类型的临时对象, 然后拷贝对象中的属性然后赋值
const temp = new copys.constructor;
deepCopy(temp, val);
target[key] = temp;
}
return target;
}
console.warn("the parameters is must be object");
}
let o1 = {
name: 'jason',
age: 10,
};
let o2 = {
sex: 1,
friends: ['alex', 'jerry'],
pet: { type: 'cat', name: 'tom' },
birthday: new Date(),
}
o1 = deepCopy(o1, o2);
console.log(o1);
console.log(o2);
网友评论