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
具有相同的结果,但正在采用不同的参数。
答案 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)
)。