Javascript の call と apply の動作
var p = {age: 23}; function hoge(arg){ console.log(arg + ' is ' + this.age + ' years old.'); } hoge.call(p, 'Tom'); //Tom is 23 years old.
ここでは、
hoge.call(p, 'Tom');
のコードを日本語で表現すると、
「オブジェクトpをhogeのthisにセットして、引数を'Tom'として実行する。」
でいいのかな...
つまり、配列の中から最大の数値を取り出すコードである
var arr = [10, 3, 20, 9]; console.log(Math.max.apply(null, arr)); //20
は、
nullをMath.maxのthisとして、arrを引数として実行することになる。
Math.maxは、
Math.max(n1, n2, n3, ... , nx);
のように引数をとるが、
Math.max([n1, n2, n3, ... , nx]);
のようにはとれないため、applyの動作を利用して配列を複数の引数として渡している。