配列コンテキストにおける呼び出し
重要性: 5
結果は?なぜですか?
let arr = ["a", "b"];
arr.push(function() {
alert( this );
});
arr[2](); // ?
arr[2]()
の呼び出しは構文的には昔ながらのobj[method]()
と同じで、obj
の役割はarr
で、method
の役割は2
です。
つまり、オブジェクトメソッドとして関数arr[2]
を呼び出しているのです。当然、this
はオブジェクトarr
を参照して配列を出力します。
let arr = ["a", "b"];
arr.push(function() {
alert( this );
})
arr[2](); // a,b,function(){...}
この配列には3つの値があります。最初は2つ、その上に関数がありました。