読者です 読者をやめる 読者になる 読者になる

Browser

Microsoft Edge(Project Spartan, Internet Explorer) 、ブラウザ周辺、Web フロントエンド開発、UI、など

Microsoft Edge まとめページ

Microsoft Edge の機能を調べてみた - Iteration Protocols 編

以前の記事で書いた Symbol の Symbol.iterator では Generator を使用しイテレータブルなオブジェクト作成しました。

 

今回はデフォルトイテレータを見てみようかと思います。
この内容は Generator の記事であまり説明はしていませんが今回紹介する機能を使用しています。

 

やること

Symbol の Symbol.iterator を使い、next() で反復動作可能なオブジェクトをつくる。

 

Iteration Protocols

Iteration Protocols には以下のものがあります。

 

iterable protocol

イテレータブル プロトコル は [Symbol.iterator] を使用し反復動作の定義、カスタマイズができます。
Symbol.iterator を使用するため、以下の型しか Edge では使用できません。

  • Array
  • TypedArray
  • String
  • Map
  • Set

 

iterator protocol

イテレータ プロトコル は next() を使用したデフォルトの反復処理が定義されています。

 

デフォルトイテレータを使ってみる

Symbol.iterator が使用できる型である文字列で試してみます。

text に Symbol.iterator キーのプロパティを設定し、
iteratorイテレータブルな文字列を持つオブジェクトにします。

 

イテレータブルになったオブジェクトで next() を呼ぶと文字列を1文字ずつ返します。
next() で返されるオブジェクトは done と value になり、
value はオブジェクトの値、done はオブジェクトの続きがあれば false を返します。
オブジェクトの続きが無い場合は done は true になり undefined の値を返します。

 

イテレータを使用する for-of では done が true になると処理が止まります。

 

まとめ

新しい型の Symbol や for-of、Generator を使用すると、
今までは何行か書かなければならなかった部分も数行で書け便利ですね。

まだ、Symbol は Safari ではサポートされていません
WWDC 2015で今年実装すると言われていたので、次の SafariiOS 9 で使うことができる様になると期待しています。

 

スポンサーリンク