call

**call()** 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。

  1. function f1(x, y) {
  2. console.log(this.name)
  3. console.log(x + y)
  4. }
  5. let obj = {name: "jack"}
  6. f1.call(obj, 1, 2)

apply

apply与call相似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组

  1. function f1(x, y) {
  2. console.log(this.name)
  3. console.log(x + y)
  4. }
  5. let obj = {name: "jack"}
  6. f1.apply(obj, [1, 2])

bind

**bind()** 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

  1. const module = {
  2. x: 42,
  3. getX: function() {
  4. return this.x;
  5. }
  6. };
  7. const boundGetX = unboundGetX.bind(module);
  8. console.log(boundGetX());