タツオチップス

最近は https://note.com/tatsuosakurai に書いてるかもです

#tkbjs #7(2010.10.14) 復習メモ

書いている今はひと月以上たつ、最近参加できず。未復習のものも含めて Lingr みながら復習する


RubyKaigi で一緒にスタッフをやった sapporo.js の @tricknotes さん初参加
(いつのまにか結構参加者が増えていて嬉しい;x;)

4.1 Function オブジェクト

・関数はオブジェクト
・オブジェクトは名前と値のペアで構成
・プロトタイプオブジェクトへの隠れたリンク
・・FunctionオブジェクトはFunction.prototypeとObject.prototypeにリンク
・関数は振る舞いを決めるためのコンテキストとコードをもつ
・オブジェクト生成時にprototypeプロパティが同時に生成
・・その値はオブジェクト
・・constructor プロパティにはその関数自身がセットされる
・関数は他のオブジェクトと違い呼び出せる
・参照→プロパティとして取り出す、呼び出す→()をつけて実行する

4.2 関数リテラル

・Functionオブジェクトは関数リテラルで作れる
・関数リテラルのパーツは4つ
・・functionという予約後
・・関数の名前(省略可能。その場合は無名関数と呼ばれる)
・・()で囲まれた関数のパラメータ。関数ないでは変数として定義。関数呼び出し時に渡された引数で初期化
・・中括弧で囲まれた命令文の集合体。関数の本体。呼び出し時に実行される。

4.3 関数の呼び出し

・関数呼び出し実行で、現在実行中の関数が一旦停止し、コントロールとパラメータが新しい関数へ渡る
・this と arguments は自動的に受け取っている
・this の値は「呼び出しのパターン」によって違う
・メソッド、関数、コンストラクタ、applyの四つの呼び出しパターンがある
・四つの違い=this がどのように初期化されるか
・パラメータより引数が少ないならundefinedが代入、多い場合は無視される
・引数の値に型のチェックは行われない。なんでも渡せる。

4.3.1 メソッド呼び出しパターン

・関数がオブジェクトのプロパティとして格納されている場合はメソッド
・this にはそのオブジェクトが格納される
・セットのタイミングは呼び出された時。遅延束縛と呼ばれる
・this を使い自身のオブジェクトコンテキストにアクセスするメソッドはパブリックメソッド

その他

これでできる! クロスブラウザJavaScript入門
第16回 JavaScriptのthisとcall
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0016