JavaScript 中 call, apply, bind 方法的区别和用法?

推荐答案

在 JavaScript 中,callapplybind 都是用于改变函数执行时 this 的指向的方法。它们的主要区别在于参数的传递方式和执行时机。

  • call: 立即执行函数,并允许你传递一个参数列表。
  • apply: 立即执行函数,并允许你传递一个参数数组。
  • bind: 返回一个新的函数,不会立即执行,允许你传递一个参数列表。

示例代码

-- -------------------- ---- -------
----- --- - - ------ -- --

-------- ----------- -- -
  ----------------------- -- ---
-

-- -- ----
------------------ -- --- -- --- -- - -

-- -- -----
------------------- --- ---- -- --- -- - -

-- -- ----
----- ------------- - ------------------ -- ---
---------------- -- --- -- - -

本题详细解读

call 方法

call 方法允许你调用一个函数,并且可以指定函数内部的 this 值。call 方法的第一个参数是 this 的值,后面的参数是传递给函数的参数列表。

apply 方法

apply 方法与 call 方法类似,但它接受一个数组作为参数列表。apply 方法的第一个参数是 this 的值,第二个参数是一个数组,数组中的元素将作为参数传递给函数。

bind 方法

bind 方法返回一个新的函数,这个新函数的 this 值被绑定到指定的对象。与 callapply 不同,bind 不会立即执行函数,而是返回一个绑定了 this 值的新函数,可以在稍后调用。

总结

  • call: 立即执行函数,参数逐个传递。
  • apply: 立即执行函数,参数以数组形式传递。
  • bind: 返回一个新函数,参数逐个传递,稍后执行。
纠错
反馈