Object value iterator:值迭代器
2017-02-08 09:34
447 查看
// ES5 // 对于数组,使用标准的 for 循环,其实这种方式并不是在遍历值,而是遍历下标来指向值!ES5中增加了一些数组迭代器:forEach、every、some // forEach:遍历数组中的所有值并忽略回调函数的返回值 // every:一直运行直到回调函数返回 false // some:一直运行直到回调函数返回 true // 对于对象, for..in 循环实际上遍历的是对象的可枚举属性列表(包括原型链)需要手动获取属性值 // 手动实现一个类似内置迭代器的 @@iterator var myObject = { a: 2, b: 3 }; Object.defineProperty( myObject, Symbol.iterator, { enumerable: false, writable: false, configurable: true, value: function() { var o = this; var idx = 0; var ks = Object.keys( o ); return { next: function() { return { value: o[ks[idx++]], done: (idx > ks.length) }; } }; } } ); // 手动遍历 myObject var it = myObject[Symbol.iterator](); console.log(it.next()); // { done: false, value: 2 } console.log(it.next()); // { done: false, value: 3 } console.log(it.next()); // { done: true, value: undefined } // ES6 // 使用 for..of 遍历数据结构(数组、对象等等)中的值,它会使用内置的 @@iterator 对象并调用它的 next 方法来遍历数据值 for (var v of myObject) { console.log(v); }
相关文章推荐
- Iterator(迭代器)模式
- Java学习之Iterator(迭代器)的一般用法
- Java记录 -58- Iterator 迭代器
- Iterator 迭代器
- Java Iterator ListIterator 迭代器 以及 并发修改异常 ConcurrentModificationException
- 【Java基础】Iterator(迭代器)的一般用法
- 迭代器的使用iterator
- Java学习之Iterator(迭代器)的一般用法 (转)
- STL迭代器之迭代器绑定器:Stream Iterator
- 迭代器(iterator)并非指针
- 集合(Collection)与迭代器(Iterator)
- Java学习之Iterator(迭代器)的一般用法 (转)
- Java集合迭代器 Iterator分析
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 19 迭代器iterator的设计原则
- Java学习之Iterator(迭代器)的一般用法 (转)
- [置顶] 【scala 迭代器】Scala Iterator(迭代器)
- Java容器Collection与迭代器Iterator
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:避免限定于一种特定的列表实现(多态迭代)
- 迭代器 Iterator