ES6
一,什么是扩展运算符
ES6的扩展运算符可以说是非常使用的,在给多参数函数传参,替代Apply,合并数组,和解构配合进行赋值方面提供了很好的便利性。
扩展运算符就是三个点“…”,就是将实现了Iterator 接口的对象中的每个元素都一个个的迭代并取出来变成单独的被使用。
二,数组中的扩展运算符
数组的复制:
理解一下:
var arr2 = [ …arr ];
[ ]表示一个数组。即arr2是一个数组。
…arr :把数组arr展开。理解分解起一个一个的元素。
相当于实现了,数组的复制—这里是浅拷贝。
类数组转数组:
Array.prototype.slice.call()
Array.from()
[…类数组对象]
字符串转数组:
把字符串转成数组:
方法一:字符串的split方法
方法二:[…]
合并数组:
方法一:数组对象的concat方法
方法二:[…]
注意:….必须有一个“容器”给包一下,直接用是错误的。
对比转码前后:
如果是数组,则直接concat拼接。
如果不是数组,则先转成数组,再conecat拼接。
三,对象中的扩展运算符
用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。等同于使用Object.assign方法。
深拷贝和浅拷贝?
深拷贝 (拷贝后无关) 浅拷贝 (拷贝后还有关) … 只能拷贝一层
实现深拷贝方式一:
实现深拷贝方式二(不能拷贝所有内容):
自已编写一个深拷贝的方式,实现深拷贝: