展开语法顾名思义可以理解为把整体展开成个体
* ES5中对于数组的浅拷贝
arr1=[1,2,3] arr2=[]
1.遍历循环arr1,将每一项push进arr2
2.利用concat方法
3.利用slice方法
ES6中对于数组的浅拷贝
使用展开语法(...)arr2=[...arr1]
* 字面量对象的拷贝
ES5中
第二种方法:
let copy2 = JSON.parse(JSON.stringify(obj))
ES6中浅拷贝的方法:
let obj = {a: 1, b: 2};
let copy = {...obj};
通过了上述简单的例子来具体说一下展开语法的定义:
展开语法在函数调用和构造数组时,将字符串和数组在语法层面展开;如果是对象时,将对象的表达式按照 key-value
的方式展开。
关键的点有:
1.用于函数调用时的传参;用于处理数组;对象。
2.代替apply方法
* 在字符串中的使用:
语法层面的展开:也就是把一个完整的字符串展开为由单个字符串组成的数组。注意要将其包含在【】中。
举个栗子
const str='segmentfault';
const arr=[...str];
console.log(arr)//(12) ["s", "e", "g", "m", "e", "n", "t", "f", "a", "u", "l", "t"]
* 在数组中使用
展开语法不仅可以用于数组的浅拷贝,还有其他有关数组的操作,比如合并数组:
var aq=[1,2,3];
var we=[4,5,6];
var rt=[...ap,...we];
console.log(rt);//(6) [1, 2, 3, 4, 5, 6]
添加操作:
var add=['hello',...aq];
console.log(add);//(4) ["hello", 1, 2, 3]
综上所述:我们只需要把整个展开字符串看成是一个整体,放在你想要放的位置上就可以了。
* 在对象字面量中使用
在对象字面量中的使用与在数组中的使用类似,这里就不不再详细说了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。