JS.next

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

仕様紹介

ユニコード文字プロパティについて

概要 正規表現でひらがなにマッチさせる場合によく「 /[ぁ-ん]/ 」とするが、これを「 \p 」エスケープ表現を使って、 「 /\p{Block=Hiragana}/u 」のように分かりやすく書けるようにするための新たな仕様がV8で実装された。 (※提案初期段階の仕様のため、…

Function#nameについて

概要 ES2015からは名前の無い関数定義であっても、コンテキストによって関数のnameプロパティが定義されるようになった。

Proxyについて

概要 Proxyを使うとオブジェクトに対する様々な操作に割り込み、好きな振る舞いをさせることが出来る。

SharedArrayBufferとAtomics APIについて

概要 JSで大きな処理を効率良く捌きたい時、今までもWorker等でスレッド立てて処理を分割する事はできたが、 スレッド間のやり取りの方法は制限されたものしかなく、バッファを共有することもできなかった。 そこで新しく導入されたSharedArrayBufferを用い…

SIMD型について

概要 新しいプリミティブ型であるSIMD型及びAPIがV8で実装されてきている。 SIMDとは、複数の数値を並べて1つの値としたようなデータ型である。 これはCPUによって効率良くサポートされているデータ型であり、 1 + 2 -> 3 をするように [ 1, 2, 3, 4 ] + [ …

new.targetメタプロパティについて

概要 「new.target」とは、ES2015で導入されたビルトインクラスのサブクラスを作る上で欠かせない存在である[[newTarget]]を取得するためのメタプロパティである。

Class構文について

概要 待ち焦がれた人も多いことだろう。ES2015の一番の目玉機能とも言えるクラス構文が、ついにV8でサポートされた。 Class構文は、『関数(コンストラクタ)定義』+『.prototypeへのメソッド定義』の糖衣構文である。 JSで今まで様々に工夫されてきたクラ…

superキーワードについて

概要 長らく予約語であったsuperキーワードが、継承元の関数を呼ぶためのキーワードとして機能するようになった。

ジェネレータについて

概要 V8でジェネレータ周りの実装が進んできたので、解説してみようと思う。

イテレータについて

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

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

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

Object.observeについて

概要 Object.observeとは、オブジェクトの変更を監視するためのAPIであった。 ES2015,2016の候補として挙げられており、V8でデフォルトで有効にされるまでに至っていたが、 実装コストがかかる上、世のニーズとそれほど合っていないということで結局廃止され…

Symbolについて

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

Promiseについて

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