跳到主要内容

4种方式判断this指向

如果要判断一个函数内的this指向,只有在运行这个函数的时候,才能知道。通过查看调用函数的方式,按照以下顺序来判断this的指向:

  1. new绑定:函数是否使用new 关键字调用?如果是,则绑定到实例上(即new出来的对象);
// this => bar
const bar = new foo()
  1. 显示绑定:是否由 callapplybind调用,如果是则绑定到callapplybind的第一个参数上;
// this => obj
const bar = foo.call(obj)
  1. 隐式绑定:是否由上下文对象调用?如果由上下文对象调用,则绑定到那个上下文对象
// this => obj
const bar = obj.foo()
  1. 默认绑定:如果以上规则都没有匹配上,在严格模式下绑定到 undefined,否则绑定到全局对象。
// this => window
const bar = foo()