补充知识:ES6中对象允许用表达式作为对象的属性名。
let obj = {
[propKey]:'zhang',
[propValue]:'Greta';
}
什么是Iterator
是一种接口,为各种不同类型的数据结构提供统一的访问机制。任何数据结构,只要部署Iterator接口,就可以完成遍历。
Iterator的基本用法
let arr = ['hello','world'];
let map = arr[Symbol.iterator]();
console.log( map.next());
console.log( map.next());
console.log( map.next());
Symbol.iterator是方法名称,后面()表示方法要执行,返回一个对象map。
每一次调用next方法,都会返回数据结构的当前成员。具体来说,就是返回一个包含value和done两个属性的对象。
其中,value属性是当前成员的值,done属性是一个布尔值。
let obj = {
start:[1,3,2],
end:[7,8,9],
// 声明iterator接口方法
[Symbol.iterator](){
let self = this;
let index = 0;
let arr = (self.start).concat(self.end);//concat() 方法用于连接两个或多个数组。
let len = arr.length;
return {
next(){
if(index<len){
return {
value:arr[index++],
done:false
};
}else{
return{
value:arr[index++],
done:true //遍历结束
};
}
}
}
}
}
for(let key of obj ){
console.log(key);
}
运行结果:
for…of
很简单,不多说了
let arr = ['hello','world'];
for(let key of arr){
console.log(key);
}