// 定义一个对象
var obj = {
a: 1,
b: {
name: 'mystic',
say: function() {
console.log('my name is ' + this.name)
},
child: {
name: 'subObj',
childFunc: function() {
console.log('this is ' + this.name)
}
}
},
c: [1,2,3]
}
// 深拷贝函数
function deepCopy(obj) {
let result = obj
// 如果value值为object类型并且非空, 进行递归
if (typeof obj === 'object' && obj !== null) {
// 判断value值类型是数组还是对象
result = Object.prototype.toString.call(obj) === '[object Object]' ? {} : []
// 这个就是赋值的过程, 好好去理解递归的精髓
for(let prop in obj) {
result[prop] = deepCopy(obj[prop])
}
}
// 如果为除object的其他类型, 直接把value值赋给对应的key
return result
}
// 进行拷贝
let obj2 = deepCopy(obj)
// 修改拷贝对象的值
obj2.b.child.name = 'xxxSubObj'
// 输出调试
console.log(obj, obj2)
[javascript] js深拷贝
最新推荐文章于 2025-04-11 00:03:45 发布
1051

被折叠的 条评论
为什么被折叠?



