在
var values = [1,2,3,4,5];
var max = Math.max.apply(Math, values);
为什么我们必须传递Math
作为this
对象?我很难理解这一点。
执行中是否有apply
需要this
(Math
)的具体内容?
答案 0 :(得分:1)
apply()
方法(Function.prototype.apply()
)允许您将参数作为数组传递给函数以及通过它传递上下文。
func.appy(this, [argumentarray])
在这种情况下,max
不需要或使用当前上下文,因此您可以放置任何内容,它将起作用,包括null。
答案 1 :(得分:0)
这取决于max
的内部实施细节。如果它完全使用this
并且期望this
为Math
,那么它是必需的。如果它没有以任何方式使用this
,则与thisArg
传递的内容完全无关。
max
可能可以使用Math
的一些辅助方法进行内部实现。除非你明确知道它没有,否则你应该保留它的背景。 (一般来说,您可以随时使用apply
或call
或传递方法。)