Kyoto.js #2 で 『ECMAScript 5 時代のオブジェクト・プロトタイプ継承入門』 という発表を行った
2012 年 11 月 29 日に開催された Kyoto.js #2 で 『ECMAScript 5 時代のオブジェクト・プロトタイプ継承入門』 という発表を行った。
発表の動機
世の中にある JavaScript のプロトタイプ継承の解説には new 演算子やコンストラクタが使われることが多い気がしていて、プロトタイプ継承そのものは単純なのに理解するのが難しくなっているように思っていた。 ECMAScript 5 の Object.create
関数を使って説明すればプロトタイプ継承が理解しやすくなって、さらにそれを理解したうえで new 演算子やコンストラクタの挙動を見ればそっちはそっちでわかりやすくなるのではないか、ということでそういう方針で説明してみようというのが今回の発表の動機。
しかし、発表資料を作るうちになんだかんだで結局難しくなってしまった気がする。
内容
- ECMA-262 (5.1) の紹介
- オブジェクトは JavaScript の値の一種で、プロパティの集合体であるということ
- プロパティは 3 種類存在する
- データプロパティ (我々が通常 「プロパティ」 と呼ぶのはこれ)
- アクセサプロパティ
- 内部プロパティ (仕様書の中で説明のために使われるプロパティ)
- プロパティは属性をもつという話 (property attributes)
- ECMAScript 5.1th のプロパティを操作するための各種関数の紹介
- プロトタイプ継承の話
- コンストラクタと new 演算子による新しいオブジェクトの生成
- コンストラクタの prototype プロパティの値が新たに生成されたオブジェクトのプロトタイプとなる (暗黙的に)