擴展運算符
阿新 • • 發佈:2018-02-17
iter ner sel 數組賦值 原理 dex fine 賦值 this
1寫法
:...三個點,主要是用來將數組幻化為用逗號分隔的參數序列。
2.應用
合並數組
與解構賦值結合
如果將擴展運算符用於數組賦值,只能放在參數的最後一位,否則會報錯。
將字符串轉為真正的數組
可以將類似數組的對象轉為真正的數組
Map和Set結構,Generator函數
3.原理
擴展運算符內部調用的是數據解構的Iterator接口,因此只要具有Iterrator接口的對象,都可以使用擴展運算符。
ES6中本身就具有Iterator接口的有:數組、類似數組的對象、Map和Set。如果對沒有iterator接口的對象使用擴展運算符,將會報錯。
(1)對一般的對象添加Iterator接口。
let obj = { data:[‘hello‘,‘world‘], [Symbol.iterator](){ const self = this; let index = 0; return { next(){ if(index < self.data.length){ return { value:self.data[index++], done:false } }else{ return { value:undefined, done:true } } } }; } }; for(var val of obj.data){ console.log(val); //hello //world }
(2)對類似數組的對象使用Iterator接口
let iterator = {
0:‘a‘,
1:‘b‘,
2:‘c‘,
length:3,
[Symbol.iterator]:Array.prototype[Symbol.iterator]
};
for(let item of iterator){
console.log(item);
//a
//b
//c
}
擴展運算符