レッスンに戻る

配列コンテキストでの呼び出し

重要性: 5

結果は何でしょうか?それはなぜでしょう?

let arr = ["a", "b"];

arr.push(function() {
  alert( this );
})

arr[2](); // ?

呼び出し arr[2]() は、構文的には古き良き obj[method]() であり、arrobj の役割を、2method の役割を持っています。

従って、arr[2] の関数をオブジェクトメソッドとして呼び出します(訳注: arr[2] には function() { alert( this ); }push されています)。当然のことながら、この関数はオブジェクト arr を参照している this を受け取るため、配列 arr を出力します。:

let arr = ["a", "b"];

arr.push(function() {
  alert( this );
})

arr[2](); // "a","b",function

配列は 3つの値をもっています: 初期に2つを持っているのに加えて、関数です。