先说几种情况的对象拷贝
1.“=” 赋值方法
let a={b:’2‘,c:‘3’}
let e=a
e.b='5'
结果
a.b="5"
改变了原来的值
2.Object.assign({},val) 对象拷贝
let a={name:"张三"}
let b=Object.assign({},a)
b.name="wangwu"
//a.name="张三"
但是当
let a = {name:{firstName:'wang',lastName:'er'}}
let b=Object.assign({},a)
b.name.firstName="wangwu"
a.name.firstName="wangwu" //又回来了
这是为什么呢?
这是因为object.assign是浅拷贝当,b.name是个栈 对象的引用 b.name.firstName a.name也是栈对象的引用 一改都改
网友评论