为了账号安全,请及时绑定邮箱和手机立即绑定

js中apply和call的疑问

js中apply和call的疑问

叮当猫咪 2018-08-03 13:10:28
看了很多篇讲解call和apply的文章,感觉理解上越来越混乱T.T一篇文章里有这样一个例子:// 获得数组中最大的元素var arr = [1, 8, 10, 3, 24, 89, 26]; var m = Math.max.apply(Math, arr); // m => 89我想问的是,为什么这里可以实现获取最大数值的元素呢?为什么要在apply的第一个参数那里把Math自己给传进去呢?apply的第一个参数不是指定函数运行时的作用域吗?理解不了...下面这个例子我能看懂,但是上面那个例子怎么也理解不了var name = 'out';var o1 = {    name: 'hello'};var o2 = {    name: 'world'};function sayName() {     alert(this.name); } sayName.call(this); // outsayName.call(window); // outsayName.call(o1); // hellosayName.call(o2); // world有哪位可以回答一下我的疑问吗,谢谢啦≡ω≡
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

其实这里不一定非要传Math啊,因为Math.max这个方法内部并不会有操作到this,
所以Math.max.apply的第一个参数随便你传什么,null,undefined都行的。
这里应该只是顺手写了Math而已吧。

查看完整回答
反对 回复 2018-09-21
  • 1 回答
  • 0 关注
  • 505 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信