var obj = {
name: 'anana',
msg: {
age: 18
},
color: ['pink', 'red']
}
var o = {} // 拷贝的新对象
function deepClone(newobj, oldobj) {
for (k in oldobj) {
// 拿到对象中的属性值
let item = oldobj[k]
// 如果属性值是数组
if (item instanceof Array) {
newobj[k] = []
deepClone(newobj[k], item)
}
// 如果属性值是对象
else if (item instanceof Object) {
newobj[k] = {}
deepClone(newobj[k], item)
}
// 属性值是普通数据类型
else {
newobj[k] = item
}
}
}
deepClone(o, obj)
o.name = 'hhh' // 改变新拷贝的对象的 name 属性
console.log(o) // 发现新拷贝的对象 name 属性变了
console.log(obj) // 原有的对象 name 属性不变
利用递归实现深拷贝
最新推荐文章于 2024-03-04 17:12:46 发布