对象终极深浅拷贝

本文探讨了JavaScript中对象的深浅拷贝概念。浅拷贝仅拷贝对象引用,导致拷贝对象与原对象相互影响。而深拷贝则复制对象值,两者独立。文中提到了通过'='赋值、JSON.parse和JSON.stringify以及递归方法实现深拷贝的多种方式,并指出JSON方式的局限性和处理对象循环引用的策略。最后,文章提供了一个终极深拷贝的实现方案。
摘要由CSDN通过智能技术生成

对象的深浅拷贝

深浅拷贝都是对对象而言的,非对象没有深浅拷贝之分。浅拷贝只是拷贝对象的引用,拷贝后的对象和原对象指向同一地址,也就是拷贝后的对象修改值会影响原对象。深拷贝的话就是拷贝其值,拷贝后的对象和源对象没有关系,互不影响。

浅拷贝
  1. 通过"="操作符赋值的方式就可以实现简单的浅拷贝
var obj = {
	name: "张三",
	age: "5",
	hobbies: ["吃饭", "睡觉"]
}
var shallowObj = obj
shallowObj.hobbies.push("打痘痘")
console.log(shallowObj) // {name: "张三", age: "5", hobbies: ["吃饭", "睡觉", "打痘痘"]}
console.log(obj) // {name: "张三", age: "5", hobbies: ["吃饭", "睡觉", "打痘痘"]}
  1. for in
var obj = {
	name: "张三",
	age: "5",
	hobbies: ["吃饭", "睡觉"]
}

var shallowObj = {}
for (var key in obj) {
	shallowObj[key] = ob[key]
}
shallowObj.hobbies.push("打痘痘")
console.log(shallowObj) // {name: "张三", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值