Js call、 apply、 bind

js 中的call apply bind的学习

function add(a, b) {
     
  console.log( a + b);
  
}

function  sub(a, b) {
     
  console.log(a - b);
  
}

// 最外面是谁, 或者是谁调用的了什么方法就是哪个. 

// call 可以改变一下 this的指向问题. 
// 参数: this指向的对象, argument1、argument2、argument3、、、
add.call(sub, 3, 4)   // 7


// apply 也可以指向 this的指向问题.
// 参数: this指向的对象, []anyArray, 任意类型的数组.
add.apply(sub, [3, 4])  // 7


//  bind 也可以用来改变 this的指向问题. 
// 参数, this指向的对象, argument1, argument2、、、
// 返回值, 函数需要执行的. 
// bind的参数和call完全一样, 就是返回值是一个函数,需要进行调用才生效. 
add.bind(sub,3,4)() // 7

 
// 同理, sub在前面, sub被调用, 那么, 执行的方法就是sub方法. 
sub.call(add, 3, 4)   // -1
sub.apply(add, [3, 4])  // -1
sub.bind(add, 3, 4)()  // -1

  • 个人感觉不是很好记(可能老了记忆力不行了), 如果硬背也是可以的, 或者, 记成
  • 打电话(call)买了个什么东西, 使用(apply)了一下, 感觉可以, 就锁了(bind).
  • 然后, 参数就是从最简单的一个个的参数=> 数组 => 返回值是一个数组, 其实就是最基础的call, apply参数变为数组, bind返回值变为函数.

你可能感兴趣的:(js基础)