对展开运算符和object.assign()的理解

Object.assign

Object.assign是用来合并对象是浅拷贝,实现原理主要是将所有可枚举属性的值从一个或多个源对象复制到目标对象,同时返回目标对象。主要是用使用
for…in 循环遍历出所有可枚举的自有属性。并复制给新的目标对象(使用 hasOwnProperty 获取自有属性,即非原型链上的属性)

扩展运算符

扩展运算符可以用来合并数组,拆分字符串,合并对象(浅拷贝)等作用,扩展运算符在调用时,它会调用该数据结构的 Interator接口,也就是遍历器,然后将该数据转为用逗号分隔的参数序列,如果是数组字符串和map结构,它会直接调用这些数据的Interator接口,返回参数序列,但对象它本身没有Interator接口,(所以调用 for of会报错),那为什么也可以用扩展运算符来操作呢,实际上是使用内置的工具函数把属性拷贝出来,实现方式也是通过工具函数遍历出它本身所有的可枚举属性

那扩展运算符和Object.assign拷贝对象,两者大体上一致,可以等同于对方,但一个关键的区别是 扩展运算符总是给你一个拷贝后的普通对象。而Object.assign()函数却修改其第一个传入对象obj:

以上只是自己的见解,如有错误,请大家及时指出。

查阅的资料

https://blog.csdn.net/github_34708151/article/details/93998883

https://blog.csdn.net/weixin_39647035/article/details/103233926

https://www.h5w3.com/27978.html

https://es6.ruanyifeng.com/?search=%E6%8B%93%E5%B1%95%E8%BF%90%E7%AE%97%E7%AC%A6&x=0&y=0#docs/iterator


版权声明:本文为weixin_43990297原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。