call & apply & bind

Apr 30, 2019 5:06·194 words ·1 minutes read

  • apply 和 call 的用法几乎相同, 唯一的差别在于:当函数需要传递多个变量时, apply 可以接受一个数组作为参数输入, call 则是接受一系列的单独变量。

bind

  • 和call很相似,第一个参数是this的指向,从第二个参数开始是接收的参数列表。区别在于bind方法返回值是函数以及bind接收的参数列表的使用。

  • bind 的返回值是函数

      var obj = {
          name: 'Dot'
      }
    
      function printName() {
          console.log(this.name)
      }
    
      var dot = printName.bind(obj)
      console.log(dot) // function () { … }
      dot()  // Dot
    
  • bind 方法不会立即执行,而是返回一个改变了上下文 this 后的函数。而原函数 printName 中的 this 并没有被改变,依旧指向全局对象 window。