apply方法如何改变this指针的?

var arr = [3, 10, 2, 100];
var max = Math.max.apply(Math, arr);

console.log(max);  //  100

有大神能详细讲解一下吗,小白弄不懂

阅读 2.7k
4 个回答

如何改变指针是标准定的,apply和call就是用来改变作用域的

call与apply的区别在于前者的参数是一个一个的,比如:

var max = Math.max;
var a = max.call(Math,1,2,5,8);
alert(a)  //8
var max=Math.max
var a=max.apply(Math,[1,2,5,8]);
alert(a)  //8

可以看看这篇,可能会有一定的帮助,谢谢!

Math.max方法可以接受多个参数,现在你这是将参数列表组成了一个数组,Math.max本身是不能接收一个数组的,现在需要一个能将数组转换为参数列表的一个工具,这个工具就是apply

var arr = [3, 10, 2, 100];
var max = Math.max.apply(Math, arr);

可以翻译为

Math.max(3, 10, 2, 100)

apply是怎么改变this的??这个得看源码了吧..就像

Array.prorotype.forEach(function(){
    this....//你是想问这个this为什么会绑到调用数组的身上??这个好难。。
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题