ECMA262読書会・1周年記念会でES6ドラフトのバージョン管理について発表してきた
ECMAScript6策定目前! ECMA262読書会・1周年記念会 - ECMA262-Edition5.1読書会 | Doorkeeperに参加してきたのメモ
ECMAScript6で何が変わるのか - 竹迫良範
- 【完全日本語訳+解説】ECMA-262 Edition 5.1を読む
- 絶版になった
- Understanding… by Nicholas C. Zakas [Leanpub PDF/iPad/Kindle]
- ES6だと新しいモノが色々入ってる
- lukehoban/es6features に機能がまとまってる
- ISOのバージョンとかとややこしいのECMAScript 2015という名前に
- ES6の新しい機能
- Arrow Functions
=>
- Classes
- クラス構文
- Enhanced Object Literal
- methodのショートハンド
- Computed propety name
- Temlplate Strings
- バッククオートで書ける
- Destructuring
- Default + Rest + Spread
- 引数のデフォルト値
- let + const
- iterators
- Unicode
- 吉野家 みたいなサロゲートペアを扱うことができるように
//u
や\u
、codePointAt
- Modules
- Module loaders
- WeakMap/WeakSet
- Proxy
- Symbol
- Math + Number + String API
0b
や0o
2進数や8進数のリテラル表現
などなど詳細はlukehoban/es6featuresで
ECMA262 Edition 5.1読書会 ここまでのおさらい - @furandon_pig
- ECMAScript 読書会
- ECMAScriptの仕様書をみんなで読み進める読書会
- ECMA262-Edition5.1読書会 | Doorkeeper
- ES5.1 仕様書の内容に沿って読み進めてる
- 第12条まで読み進めてた
- 第4条概要
- ECMAScriptの概要
- 言語仕様にとらわれない概要
- 外部データや出力先は規定せず
- 計算環境自体がホストオブジェクト
- ECMAScriptはオブジェクトベース
- オブジェクトとはプロパティのコレクション
- プロパティとは
- プリミティブ値と関数を格納するコンテナ
- プリミティブ値は最も低いレベルで扱うデータ
- string
- number
- nullなど
- オブジェクトとメソッド
-
ECMAScript does not use classes such as those in C++, Smalltalk, or Java.
- http://people.mozilla.org/~jorendorff/es6-draft.html#sec-objects
- クラス自体を持ってる訳ではなく、それを表現するためにオブジェクトなどを使うという話
- オブジェクトはプロパティのコレクション
- プロパティは以下の3種類が定義されてる
- 名前付きデータプロパティ
- 名前付きアクセサプロパティ
- 内部プロパティ
- 内部プロパティはユーザからは見えない、内部的な処理
[[hoge]]
という感じで表現される
- JavaScriptでの継承
- データ型
- プリミティブ型
- 仕様書型
- Referrence
- Completion
- など
- がES5.1dで規定されてる
- 仕様書型は最初に押さえてないと、仕様書を読むのが難しくなる
- Referrence仕様書型
- JavaScriptで変数で値が入ってない時undefinedとなるような、
- そのReferenceの仕組みを定義してる型
- 変数と値をバインディングする型
- Completion仕様書型
- breakやreturnなどのふるまいを説明するための方
([[type]], [[value]], [[target]])
のタプル値- 中途完了 = typeがnormal以外の値
- PropertyDescriptor型
- データプロパティ記述子
[[Value]]
など- データプロパティはプロパティの今の値を取ってくるだけ
- アクセサプロパティ記述子
[[Get]
、[[Set]]
という名のフィールド
Object.defineProperty()
などで触れる場所
- データプロパティ記述子
- オブジェクトの内部メソッドのアルゴリズム
- 擬似言語的にアルゴリズムが定義されてる
- Lexical Enviroment
- レキシカル環境
- レキシカル環境とEnvironment Recordsは仕様書の中で出てくる表現なので、実装を使ったそれをプログラムから参照できるわけではない
- オブジェクトの内部メソッドのアルゴリズム
FAQ
- for…inの順番
- ES5は未定義、ES6は定義
var a = [20,3];
a.propertyIsEnumerable();// falseなのはなんで?
以下のように使うのが正解
var a = [20,3];
a.propertyIsEnumerable(0);// false
MDN
FAQ. Completion型とかはあくまで仕様。V8とかはそれ自体はコストがでかいので実装してない。 外から見える動作をテストしている。
新しい仕様も最初はナイーブな実装型から初めて、テストで固めてやっていく。 ESDiscussも実装者が多いので、まずい仕様はそこまで来ない。
AltES6 Introduction - @make_now_just
- AltES6
- Alt言語からES6へ変換される言語
- ES6にコンパイルされる
- 重いランタイムなどは要らないのでシンプル
- AltJSの言語例
- Spider
- Getting Started | Spider
- ES5,6へ変換できるAltJS
- go言語のようなchannel
- ES6っぽいSyntaxを
- Earl Grey
- 実行にはruntimeが必要
- Pythonっぽい構文だけど、何でも入ってる
- SpiderとEarl Grey
- ES5とES6どちらに変換するかを選べる
- ES6のASTを作った後にescodegenで変換
まんがタイム WebKit のドキドキ☆ビジュアル ES - @Constellation
- Webkit
- ES6の進捗がV8みたいな感じに見える
- WebkitのJSCは55%ぐらいES6実装されてる
- The WebKit Open Source Project - Web Platform Status
- 実装状況がステータスが乗ってる
- 乗ってる実装
- ES6 Classes
- letやconstがまだなので乗ってないためTDZがダメ
- Symbols
- Symbol実装される
- Template Strings
- Tempalte Litral
- Tagged Template
- for-of
- throwでreturnも対応してる
- ES6 Classes
- WebKit Nightly Builds で試せる
Macだとナイトリーでも簡単にビルドできる
ECMAScript 6 Draft Hisotry Repo - azu
スライド: ECMAScript 6 Draft Hisotry Repo
以前書いたECMAScript 6ドラフトのDiff検索用リポジトリを作った | Web Scratchについての発表。
ES6のドラフトの文章を管理するGitリポジトリを作った話で、tigなどを使って検索する手段などについての話。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。