2章 JavaScript言語仕様
コアの言語仕様。
- p25 プロトタイプベースのオブジェクト指向言語(補足:ECMA Script6ではクラスの実装が検討されている)
- p25 プログラム例はsmjs(SpiderMonkeyのシェル)で実行確認。ECMA Script5+JavaScript1.8.5
- p26 結果の表示方法はコア言語にはない。Webブラウザならalertやdocument.write。FireBugやNode.jsならconsole.logなどを使う
変数
- p27 変数はvarで宣言し、同時に初期値を入れておくのが行儀がよい
- p27 変数は使い回さないのが行儀がよい
- p27 初期化していない変数はundefinedを読みだす。右辺値で利用するとエラー
- p28 varを省略するとグローバル変数として宣言されて利用はできる。しかし、避けるべき
- p28 varの省略をエラーにするのがstrict mode
- p28 SpiderMonkeyではconstで定数が利用できる。ただし独自拡張
- p28 定数の名前は全て大文字にする慣例
オブジェクトの基礎
- p32 JavaScriptのオブジェクトは、名前と値のペアの集合
- p32 JavaScriptのオブジェクトは、プロパティには関数を入れられる
- p32 JavaScriptのオブジェクトは、プロトタイプチェーンを持つ
オブジェクトリテラル
- p33 {}で囲み、プロパティ名:値をコンマ区切りで列挙
{ プロパティ名1:値1, プロパティ名2:値2 }
- p33 オブジェクト最後のコンマはECMA Script3では不可。避けておいた方が無難
- p34 存在しないプロパティに値を代入すると、プロパティを新規追加して値を代入する
- p34 プロパティへの参照は.(ドット)か[](ブラケット)
var obj={prop1:0}; var pname = 'prop1'; print obj.prop1; print obj['prop1']; print obj[pname];
new式
- p35 JavaScriptにはクラスがないので、newの後ろに書くのは関数名
- p35 newの後ろに関数名を書くと、その関数はコンストラクタとして動作する