Object.assign的问题,为什么只改变了1个值?

letobj={name:'程序猿',age:{child:12}}
letcopy=Object.assign({},obj);
copy.name='单身狗'
copy.age.child=24
console.log(obj)//{name:'程序猿',age:{child:24}}
为什么child改变了,但name没变,什么原理,网上查了一下也没得出什么有用的结论啊
红颜莎娜
浏览 743回答 2
2回答

守着星空守着你

Object.assign()拷贝的是属性值。假如源对象的属性值是一个对象的引用,那么它也只指向那个引用简单来说,就是通过Object.assign拷贝的对象,如果对象的属性是简单数据类型,那么它与源对象之间是不相关的,如果是引用类型,那么改变拷贝对象的属性也会影响到源对象

浮云间

参考资料:1.js中值类型与引用类型的区别2.js深拷贝与浅拷贝的区别3.Object.assign是浅拷贝。望采纳。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript