JavaScript call、apply 和 bind 方法

callapplybind 都是 Function.prototype 上的方法。javascript

Function.prototype.call
Function.prototype.apply

Function.prototype.bind
复制代码

call 和 apply

callapply 都用于调用函数。java

function sayName(...args) {
   console.log(`${this.name} 和其余参数 ${args}`); 
};

let me = {
   name: 'zhangbao'
};

// 1. 使用 apply
sayName.apply(me, [1, 2, 3]); // zhangbao 和其余参数 1,2,3

// 2. 使用 call
sayName.call(me, 1, 2, 3); // zhangbao 和其余参数 1,2,3
复制代码

applycall 的第一个参数都是指定被调用函数的上下文对象(Context)。数组

apply 的第二个参数、call 的第二个以及以后参数都是传递给前面被调用函数的参数。不一样的是:app

  1. 传递给 apply 的参数是数组类型的。
  2. 传递给 call 的参数是一组用逗号分隔的参数序列。

你能够这样快捷的记忆。函数

apply for Array, call for Comma.ui

bind

bind 接收的参数类型与 call 是同样的,给它传递的是一组用逗号分隔的参数列表。this

但与 call 不同的是:bind 方法返回一个全新的函数----这个全新的函数携带调用 bind 方法时,提供的上下文对象和参数。spa

bind 方法一般地使用场景是:将来的某个时间,在指定的一个上下文环境下,调用一个函数(这个函数就是以前用 bind 方法处理过,返回的函数)。prototype

(完)code

相关文章
相关标签/搜索