var obj = {
id: 1,
name: 'zhaoji',
msg: {
age: 18
},
color: ['pink', 'red']
}
var o = {}
function deepCopy (newObj, oldObj) {
for (let k in oldObj) {
// 判断属性值属于哪种数据类型
let value = oldObj[k]
// 如果是数组则将该属性赋值一个空数组并进行递归拷贝
if (value instanceof Array) {
newObj[k] = []
deepCopy(newObj[k], value)
} else if (value instanceof Object) { //如果是一个对象,则先赋值为一个空对象再进行递归拷贝
newObj[k] = {}
deepCopy(newObj[k], value)
} else { //如果是简单数据类型则直接赋值即可
newObj[k] = value
}
}
}
deepCopy(o, obj)
console.log(o);
js深拷贝
于 2022-04-05 17:57:40 首次发布