apply、call、bind的区别

时间:2023-02-03 18:59:36

apply、call、bind这三种方法一般用来改变this指向。

apply()方法接收两个参数,一个是函数运行的作用域this,另一个是参数数组

call()方法接收两个参数,一个是函数运行的作用域this,传递给函数的参数一定要列举出来。

语法:调用一个对象的一个方法,另一个对象替换当前对象

apply([thisObj[,argArray]])

call([thisObj[,arg1[,arg2[,…,argn]]]])

说明:如果没有提供任何一个参数,那么Global对象将用作thisObj。

bind和call、apply方法不同,bind函数不会执行,而只是返回一个改变了上下文的函数副本,而call和apply是直接执行函数,bind也可以有多个参数,并且参数可以执行的时候再次添加,但是要注意的是,参数是按照形参的顺序进行的。

 

apply结合Math可以提取数组的最大最小值:

  var a = [1,3,4,56,23,4];
  Math.max.apply(null,a) ————//56
  Math.min.apply(null,a) ————//1

传null或undefined时,将是JS执行环境的全局变量。浏览器中是window,其它环境(如node)则是global