apply 、 call 、bind 区别?

apply 、 call 、bind 区别?
最新回答
仲夏柠叶香

2026-01-06 05:28:41

apply 、 call 、bind 是 JavaScript 中用于改变函数执行时 this 指向的工具。

它们的首个参数都是用于指定 this 的指向对象,即上下文环境。

所有这三个方法都可以接收后续参数,用于传入给函数。

bind 方法返回一个新函数,供稍后调用使用,而 apply 和 call 则立即执行。

call 方法通常用于函数调用,如:

例:f(){}

调用函数:f.call(),此时 this 为 f.call() 的第一个参数,即函数自身。

bind 方法有两点特性:返回新函数,可以传入参数。

例:返回新函数:

例:传入参数:

call 方法和 apply 方法作用类似,但 call 接受参数列表,而 apply 接受参数数组。

使用语法:func.call(this, arg1, arg2); 或 func.apply(this, [arg1, arg2])。

call 和 apply 都将参数视为函数本身执行,当参数数量确定时使用 call,不确定时使用 apply,将参数放入数组传递。

数组追加:让 array1 具备 Array 的 push 方法。

获取最大值和最小值:让 numbers 具备 Math 的 max 方法。

验证数组:对于未重写 toString 方法的数组。

类(伪)数组 转换为 真正数组:适用于 arguments 对象及 NodeList 对象。

bind 方法在回调函数执行时才真正生效,而 call 和 apply 方法则立即执行。