Math对象作为apply()第一个参数设置this值?

2020-10-19 14:53发布

问题:

js高级程序设计115页,原文

//要找到数组的最大或最小值,可以这样使用apply()方法
var values = [1, 2, 3, 4, 5, 6, 7, 8];
var max = Math.max.apply(Math, values);
//这个技巧的关键是把Math对象作为apply()的第一个参数,从而正确的设置this值。

看到的时候???,这个和this值有什么关系?这个不是用到了apply()方法把数组转成一个个变量吗(apply当然可以设置this值,但这里似乎和这个没有关系)。

(function(){
            var obj = {
                a: 1,
            };
            console.log(Math.max.apply(obj, [123, 456, 21]));//456
})()

实验了一下,似乎跟我想的一样,那是书有问题吗?

回答1:

和 this 没有任何关系,随便传个什么值都一样
这个技巧的关键应该是借助于 apply 把数组传给一个只能接收单个值的方法
es2015的展开操作符完全可以取代这个技巧



标签: javascript