これは私が答えを知っているべきだと確信しているものですが、私はただ愚かであるか、または私はこれまでにこれに出くわしたことがないかのどちらかです...
次の配列が与えられた場合、グローバルスコープで宣言されます。
var arr = [function() {
console.dir(this);
}];
this
Windowオブジェクトを参照することを期待していました。ただし、関数を呼び出す場合:
arr[0](); //Logs Array
this
実際にはアレイを参照しているようです。次に、関数への参照を別の変数に格納してそれを呼び出すと、Windowオブジェクトを参照しますthis
。
var func = arr[0];
func(); //Logs Window
では、なぜ関数のコンテキストが変わるのでしょうか。上記の2つのケースを示すフィドルがあります。