对象的深浅拷贝
深浅拷贝都是对对象而言的,非对象没有深浅拷贝之分。浅拷贝只是拷贝对象的引用,拷贝后的对象和原对象指向同一地址,也就是拷贝后的对象修改值会影响原对象。深拷贝的话就是拷贝其值,拷贝后的对象和源对象没有关系,互不影响。
浅拷贝
- 通过"="操作符赋值的方式就可以实现简单的浅拷贝
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: ["吃饭", "睡觉", "打痘痘"]}
- 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: "张三",