レッスンに戻る

配列コンテキストにおける呼び出し

重要性: 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つ、その上に関数がありました。