首页 新闻 会员 周边

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

0
[已解决问题] 解决于 2020-10-19 14:51

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
})()

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

X_某的主页 X_某 | 菜鸟二级 | 园豆:202
提问于:2020-10-19 11:31
< >
分享
最佳答案
0

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

奖励园豆:5
by.Genesis | 老鸟四级 |园豆:2719 | 2020-10-19 12:04

谢谢。学习了~

X_某 | 园豆:202 (菜鸟二级) | 2020-10-19 14:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册