话不多说,直接干。
浅拷贝
1.使用es6对象结构
2.使用es6的Object.assign
3,for…in循环遍历
4,for…of循环遍历
深拷贝
1,利用JSON的方法
注意该方法不能拷贝reg对象
2,递归拷贝
function deepClone(obj) {
// let objClone = Array.isArray(obj) ? [] : {};
// 跟下面的区别在于你是否愿意拷贝obj原型上的属性(即obj._proto_上面的属性)到拷贝对象的原型上
// 如果不要就用Object.create,
// hasOwnProperty仅仅判断是否拷贝对象obj原型上的属性到拷贝对象里面,即可以通过console.log直接
// 观察的
let objClone = Array.isArray(obj) ? [] : Object.create({});
if (obj && typeof obj === "object") {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key] && typeof obj[key] === "object") {
objClone[key] = deepClone(obj[key]);
} else {
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
该方法同样无法clone REG