浅拷贝与深拷贝

浅拷贝只拷贝了最外层,对于更深层次只拷贝引用(即只拷贝数据地址,如果对数据进行更改则会互相影响)

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)

 

posted @ 2020-10-17 12:02  前端--张帅  阅读(83)  评论(0)    收藏  举报