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を暗黙参照する。
プロトタイプによる拡張
参考;@IT