配列コンテキストでの呼び出し
重要性: 5
結果は何でしょうか?それはなぜでしょう?
let arr = ["a", "b"];
arr.push(function() {
alert( this );
})
arr[2](); // ?
呼び出し arr[2]()
は、構文的には古き良き obj[method]()
であり、arr
が obj
の役割を、2
が method
の役割を持っています。
従って、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つを持っているのに加えて、関数です。