call-apply-bind区别

92 阅读1分钟

1.js三种调用方法,thsi指向

  1.1普通函数: 函数名()  this指向window
  1.1构造函数: new 函数名()  this指向实例对象
  1.1对象的方法: 对象.方法名()  this指向对象
  默认情况下 this指向时确定的  无法被修改
2.函数上下文调用:可以修改this指向
  2.1函数名.call{修改的this指向,参数1,参数2,...}
  2.2函数名.apply(修改的this,数组/伪数组)
  2.3函数名.bind(修改的this)
    *bind()不会立即执行函数,而是返回一个修改this之后的新函数
3.面试题:call-apply-bind区别.
相同点:作用一致,都是修改函数的
不同点:
  1.传参方式不同:call时单个传参   apply是数组/伪数组传参
  2.执行机制不同:call和apply会立即执行  bind不会立即执行 而是返回一个修改this之后的新函数