Object value iterator:值迭代器
生活随笔
收集整理的這篇文章主要介紹了
Object value iterator:值迭代器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 // ES5
2 // 對(duì)于數(shù)組,使用標(biāo)準(zhǔn)的 for 循環(huán),其實(shí)這種方式并不是在遍歷值,而是遍歷下標(biāo)來(lái)指向值!ES5中增加了一些數(shù)組迭代器:forEach、every、some
3 // forEach:遍歷數(shù)組中的所有值并忽略回調(diào)函數(shù)的返回值
4 // every:一直運(yùn)行直到回調(diào)函數(shù)返回 false
5 // some:一直運(yùn)行直到回調(diào)函數(shù)返回 true
6 // 對(duì)于對(duì)象, for..in 循環(huán)實(shí)際上遍歷的是對(duì)象的可枚舉屬性列表(包括原型鏈)需要手動(dòng)獲取屬性值
7 // 手動(dòng)實(shí)現(xiàn)一個(gè)類(lèi)似內(nèi)置迭代器的 @@iterator
8 var myObject = {
9 a: 2,
10 b: 3
11 };
12
13 Object.defineProperty( myObject, Symbol.iterator, {
14 enumerable: false,
15 writable: false,
16 configurable: true,
17 value: function() {
18 var o = this;
19 var idx = 0;
20 var ks = Object.keys( o );
21
22 return {
23 next: function() {
24 return {
25 value: o[ks[idx++]],
26 done: (idx > ks.length)
27 };
28 }
29 };
30 }
31 } );
32
33 // 手動(dòng)遍歷 myObject
34 var it = myObject[Symbol.iterator]();
35
36 console.log(it.next()); // { done: false, value: 2 }
37 console.log(it.next()); // { done: false, value: 3 }
38 console.log(it.next()); // { done: true, value: undefined }
39
40 // ES6
41 // 使用 for..of 遍歷數(shù)據(jù)結(jié)構(gòu)(數(shù)組、對(duì)象等等)中的值,它會(huì)使用內(nèi)置的 @@iterator 對(duì)象并調(diào)用它的 next 方法來(lái)遍歷數(shù)據(jù)值
42 for (var v of myObject) {
43 console.log(v);
44 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/kuangliu/p/6376721.html
總結(jié)
以上是生活随笔為你收集整理的Object value iterator:值迭代器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 汇编基础入门知识
- 下一篇: 56 - II. 数组中数字出现的次数