最近の記事
- 9/1 - 将棋始めました
- 5/16 - サーバー引っ越し
- 4/24 - 優先順位
- 3/17 - vbNullString と 空文字列 ""
- 3/15 - InputBox 関数の戻り値
- 3/13 - 紙と Excel と VBA
- 3/9 - 未だに Visual Basic 6
- 11/14 - ぼて閉鎖
- 11/9 - 関数オブジェクトの呼び出し
- 9/7 - メソッドとしての関数オブジェクト
Entering Passive Mode
function foo() {
;
}
var obj = new Object();
obj.foo = foo;
var x = foo();
var y = new foo();
var z = obj.foo();
関数オブジェクトには 3 つの用途があることが分かった。
他の言語では、これらは独立していることが多いが、
JavaScript では、全て関数オブジェクトを利用する。
これらを区別するのは、その呼び出し方法である。
func() としてそのまま呼び出せば関数に、
new func() として呼び出せばコンストラクタに、
xxx.func() とプロパティとして呼び出せばメソッドとなる、
これら呼び出し方には、それぞれ役割がある。
コンストラクタは新しいオブジェクトの生成、
メソッドは、呼び出したオブジェクトに対する操作。
関数は、上記に当てはまらない、一般的な処理。
さて、呼び出される関数側の視点では、
上記のどの方法で呼び出されようが、
自身のコードが実行されるだけである。
しかし、呼び出し側の視点では、
それぞれの方法によって動作が変わる。
コンストラクタでは新しいオブジェクトが戻り、
関数やメソッドの呼び出しでは戻り値がそのまま戻る。
つまり、関数を呼び出す際には、JavaScript が介在し、
役割に応じて特別な処理を行っている。
まあ、当たり前だというと当たり前だ。
では、具体的に、どのような処理が裏で行われ、
それがどういう風に反映されるか、
コードだけでは見えない部分について考えていこう。
コメント (0 件)