Javascriptの基本; まとめログ

自分用のまとめ。

オブジェクトの動的変更

jsオブジェクトは、実行中に「.(ドット)演算子」によって動的に変更される。

いろいろな関数

var test = function(...) { ....};

は、右辺で定義される無名関数の参照を、testという変数でラベル付けする、もの。
javascriptでは、関数に()を付けると、「実行せよ」を意味するので、

var v1 = test;

は、無名関数をv1で再度ラベル付けするのに対して、

var v2 = test();

の右辺は、(function(...){...})()となって、v2には実行結果が入る。

スコープチェーン

varによって変数が宣言されると、その変数は、それを含む最小のオブジェクトに所属することになり、そのオブジェクト内からのみ参照が可能になる。
下位のオブジェクトから変数を参照するとき、そのオブジェクトに変数が定義されていなければ、上位のオブジェクトにさかのぼって探しに行く。

クロージャーとその読み方

(関数系言語において)「状態を持つ関数」をカプセル化する方法
参考;wikipedia; クロージャ

インスタンスとコンストラクタ、代入式

Javascriptの文脈で『コンストラクタ』という言葉に遭遇することがある。これは、 (活性化する)関数オブジェクト内の「スクリプトの実行」 を意味している。実行されるスクリプトが、そのまま、コンストラクタとなる。また、コンストラクタに存在するthisは、生成したインスタンスをさす。

インスタンス化とthis

thisを返却する関数をnew 演算子インスタンス化する、ということは、そのインスタンスへの参照を返却していることになる。

イベントハンドラ―とthis

イベントハンドラー(関数)においては、thisはそれを内包する最小のオブジェクトをさす

イベントプロパゲーション(バブリング)

DOM階層の下位で発生したイベントが、上位に伝播していくこと。

プロトタイプチェーン

関数オブジェクトに雛形(プロトタイプ: prototype)を設定して、関数オブジェクトから雛形への参照ルートを作ること。

function testFunc1() { // --- (1)
  this.p1 = 10;  // --- (2)
  this.p2 ='hoge'; // --- (3)
}

var obj1 = new testFunc1(); // --- (4)
function testFunc2() { // --- (5)
}
testFunc2.prototype = obj1; // --- (6) prototypeにobj1を設定する。

obj2.p1、obj2.p2 <= obj2は、プロトタイプであるobj1を暗黙参照する。