JavaScriptのapply関数のサンプルについてなんですが。
var numbers = [5, 6, 2, 3, 7]; var max = Math.max.apply(null, numbers);
上の呼び出し方で、strictモードでない場合、max関数内部のthisをグローバルオブジェクトに固定してmaxメソッドを実行する、ということだと思うのですが、なぜthisをグローバルオブジェクトに固定すると期待通りの結果がでるのでしょうか?
var vegetables = ['parsnip', 'potato']; var moreVegs = ['celery', 'beetroot']; // 1 つ目の配列に 2 つ目の配列をマージさせます // vegetables.push('celery', 'beetroot'); と同じ結果になります Array.prototype.push.apply(vegetables, moreVegs); console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']
上の呼び出し方でpushメソッド内のthisをvegetablesに固定してpushメソッドを実行する、ということだと思うのですが、なぜthisをvegetablesに固定すると期待通りの結果(配列のマージ)になるのでしょうか?
この疑問を解決するには、maxやpushメソッドの中身を見ないと解決できないと思うのですが、そこまで踏み込まずに、maxやpushはそういうふうに作られているから、こういう呼び出し方をすればこういうことができる、ととりあえず理解しとくのが良いでしょうか?
回答4件
あなたの回答
tips
プレビュー