Apply()方法的第一个参数Args

时间:2015-05-11 13:22:15

标签: javascript

GAME = {};

GAME[1] = {
    test: 1,
    test2: 2
}
GAMELENGTH = (Math.max.apply(Math.max, Object.keys(GAME))) + 1;
GAMELENGTH2 = (Math.max.apply(Math.apply, Object.keys(GAME))) + 1;

GAMELENGTH3 = (Math.max.apply(null, Object.keys(GAME))) + 1;

console.log(GAMELENGTH);
console.log(GAMELENGTH2);
console.log(GAMELENGTH3);

JSFiddle:http://jsfiddle.net/agx85sba/2/

我应该将{I} apply()的第一个参数用作什么?由于所有这些不同的GAMELENGTH具有相同的结果,但正在采用不同的参数。

1 个答案:

答案 0 :(得分:1)

  

fun.apply(thisArg, [argsArray])

     

<强> thisArg

     

this的调用提供fun的值。请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,并且原始值将被装箱。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

对于您的用例而言无关紧要。 Math.max的实际实施可能不关心this

您使用apply获取值列表的最大值,而无需将它们全部写入函数调用(Math.max(1,2,3,4,5) vs var list = [1,2,3,4,5]; Math.max.apply(null, list))。