JS.next

JavaScriptの最新実装情報を追うブログ

ES2015

2つのStringメソッドが実装された

概要 サロゲートペアを考慮して、String.fromCharCodeとString.prototype.charCodeAtと同じ働きをする String.fromCodePointとString.prototype.codePointAtメソッドが実装された。

型付配列に配列と同じメソッドが実装された

概要 ES5までは型付配列で配列のようなメソッドを使うことが出来ず、度々不便なこともあったが、 ES2015から多くの配列と同じメソッドが使えるようになった。

Map、Setが正しく実装された

概要 今までV8ではMap、Setコンストラクタの引数付きの呼び出しが正しく実装されていなかったが、この度正しく実装された。 引数にイテラブル(=@@iteratorメソッドを持つ)オブジェクトを渡すことで、それを元に初期化させることができる。

いろいろなオブジェクトに@@iteratorメソッドが実装された

概要 イテレータが期待される場面で呼ばれるビルトイン"iterator"シンボルメソッドが、様々なオブジェクトへ実装された。

イテレータについて

概要 V8でES2015のイテレーション周りの実装が進んできたので、解説してみようと思う。

{Map,Set}.prototype.{values,keys,entries}が実装された

概要 Array.prototype.{values,keys,entries}と同じような要領でコレクションを列挙することができる。 列挙される順序はコレクションに加えた順序と同じであることが保証される。

for文でのlet変数が毎ループ新スコープを持つようになった

概要 かつてはfor文初期化句で宣言された変数は、for文の直前で宣言されたように振舞っていたが、各ループでスコープを引きづらないように仕様が変更され、V8も追従した。

ES2015では何が同値とみなされるか まとめ

概要 ES2015で導入されるObject.isとCollectionのkeyにおいて、何が「同じ」と見なされるのかをまとめてみる。

Array.prototype.fillが実装された

概要 配列の指定した範囲を、指定した値で満たすことができる、破壊的メソッドである。

{Map,Set}.prototype.forEachが実装された

概要 Array.prototype.forEachと同じような要領でコレクションを列挙することができる。 列挙される順序はコレクションに加えた順序と同じであることが保証される。

Weak Collectionsがデフォルトで有効になった

概要 ES2015で導入される機能である、Promise、WeakMap、WeakSetコンストラクタがデフォルトで有効になった。

Symbolについて

概要 ES2015ではUndefined、Null、Boolean、Number、String、Objectの6つの型に加えて、新しい型Symbolが導入された。 シンボルはプリミティブ型で、文字列のようにプロパティのキーとして使える特徴を持つ。

String.prototype.normalizeが実装された

実装されたメソッド String.prototype.normalize(form = "NFC") form(初期値:"NFC")の形式で正規化した文字列を返す

MapとSetが+0と-0を区別しなくなった

概要 MapやSetとは、キーにあらゆる型のあらゆる値を使えるコレクションである。 かつてはキーとして+0と-0を区別していたのだが、区別しないことになり、V8の実装も追従した。

String.prototype.{startsWith,endsWith,includes} が正規表現を受け付けなくなった

概要 これらは文字列を期待するメソッドだが、splitの用に正規表現も受け付けると思われて解決しづらいバグの元になってしまわないように、正規表現オブジェクトが渡された時は専用のエラーを出すことになり、V8の実装も追従した。

Object.setPrototypeOfが実装された

実装されたメソッド Object.setPrototypeOf(target, proto) targetオブジェクトのプロトタイプをprotoに設定する 返り値はtargetで、protoはオブジェクトまたはnullである必要がある

Object.getOwnPropertySymbolsが実装された

実装されたメソッド Object.getOwnPropertySymbols(obj) オブジェクトが持つ全てのシンボルキーの配列を返す (文字列キーにおけるgetOwnPropertyNamesのシンボルキー版) シンボルに付いてはコチラの記事を参照

Numberコンストラクタに新しい関数と定数が実装された

概要 NumberコンストラクタにES2015で追加された3個の定数と6個の関数が実装された。

Promiseについて

概要 Promiseとは非同期処理を上手く扱う為のAPIであり、パターンである。 非同期の処理の完了後に続けて処理を行いたいとき、よくコールバックパターンが使われるが、処理が連続するとコールバック地獄と言われる分かりづらいソースコードになってしまう。 …

新しいMath関数が実装された

概要 ES6で新しく入った16個(?)のMath関数の実装が始まった。 (ただしMath.imulは暫く前から実装済み)

ArrayBuffer.isViewが実装された

実装されたメソッド ArrayBuffer.isView 指定したオブジェクトが、TypedArray(型付配列)やDataViewかの真偽値を返す より正確には…… 『ViewedArrayBuffer』内部プロパティを持っているかどうか これはArrayBufferへのインターフェイスを提供してくれるような…

ArrayIteratorがインデックスを数値型で返すようになった

変更点 タイトルの通り 影響 一部のArrayIteratorを返すメソッド Array.prototype.keys Array.prototype.entries

配列操作のメソッドが2つ実装された

実装されたメソッド Array.prototype.find 指定した関数に、配列の要素を順に与えて呼び出し、その関数がtrueを返したときの要素を返す Array.prototype.findIndex 同じく、要素のインデックスを返す 要は指定した条件に合う配列の要素や、要素のインデック…

文字列操作のメソッドが4つ実装された

実装されたメソッド String.prototype.repeat 文字列を指定した回数だけ繰り返した、新しい文字列を返す String.prototype.startsWith 文字列が指定された文字列で開始されているかの真偽値を返す String.prototype.endsWith 文字列の終端に指定された文字列…

新8進数と2進数の数値リテラルが実装された