为什么我们必须将'this'传递给'apply'

时间:2017-09-22 14:02:08

标签: javascript

var values = [1,2,3,4,5];
var max = Math.max.apply(Math, values);

为什么我们必须传递Math作为this对象?我很难理解这一点。

执行中是否有apply需要thisMath)的具体内容?

2 个答案:

答案 0 :(得分:1)

apply()方法(Function.prototype.apply())允许您将参数作为数组传递给函数以及通过它传递上下文。

func.appy(this, [argumentarray])

在这种情况下,max不需要或使用当前上下文,因此您可以放置​​任何内容,它将起作用,包括null。

请参阅此问题:How does the Math.max.apply() work?

答案 1 :(得分:0)

这取决于max的内部实施细节。如果它完全使用this并且期望thisMath,那么它是必需的。如果它没有以任何方式使用this,则与thisArg传递的内容完全无关。

max 可能可以使用Math的一些辅助方法进行内部实现。除非你明确知道它没有,否则你应该保留它的背景。 (一般来说,您可以随时使用applycall或传递方法。)