浅拷贝与深拷贝
浅拷贝只拷贝了最外层,对于更深层次只拷贝引用(即只拷贝数据地址,如果对数据进行更改则会互相影响)
es5浅拷贝:
var obj = {
name:"我是外部名称",
jineng : {
name:"我是内部名称"
}
}
var o = {}
o.jineng.name = "我是被修改后的名称" // 浅拷贝的数据发生改变时,拷贝与被拷贝对象的数据都会发生改变
for(var i in obj) {
o[i] = obj[i]
}
console.log(o.jineng.name) //我是被修改后的名称
console.log(obj.jineng.name) // 我是被修改后的名称
在es6中,给浅拷贝提供了语法糖 Object.assign(拷贝的对象,被拷贝的对象) 方法
Object.assign(o, obj)
浙公网安备 33010602011771号