読者です 読者をやめる 読者になる 読者になる

tanaka's Programming Memo

プログラミングについてのメモ。

パーフェクトJavaScript勉強メモ(2)

前へ | 次へ

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 定数の名前は全て大文字にする慣例

p29 関数

  • p30 関数リテラルは関数定義で関数名を書かないもの
function (引数リスト) {
  関数本体
}
  • p31 関数リテラルは、リテラルなので式の中に書ける。変数に代入もできる
  • p32 関数はオブジェクト。ただし、オブジェクトは全て関数ではない

オブジェクトの基礎

  • 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の後ろに関数名を書くと、その関数はコンストラクタとして動作する

JavaScriptのプロパティアクセス

  • p36 クラスプロパティはjavaのstaticプロパティと同様
  • p36 prototypeオブジェクトのプロパティと、インスタンスプロパティは、インスタンスオブジェクトにアクセスする
  • p36 prototypeオブジェクトのプロパティは、オーバーライドする前のもの。オーバーライドしたのがインスタンスプロパティ

配列

  • p37 組み込みの機能はなく、Arrayオブジェクトで実現する
  • p37 その代り、操作には配列用のリテラルが組み込まれているので意識せず利用できる
var arr = [1, 100, 7];
print(array[0]);
  • p37 要素の型はバラバラでよく、オブジェクトや配列も入れてよい

今日は以上。

前へ | 次へ