对this的理解

  • this是调用时被绑定的,完全取决于函数的调用位置
  • 调用位置

    调用位置就是函数被调用的位置,要寻找调用位置就要分析调用栈(就是为了到达当前执行位置所
    调用的所有函数)。调用位置就在当前正在执行的函数的前一个调用中。

  • this的绑定规则

  1. 默认绑定
  2. 隐式绑定
  3. 显示绑定
  4. new绑定
  • 判断this(优先级)
  1. 函数是否在new中调用(new 绑定)?如果是的话this绑定的新创建的对象
  2. 函数是否通过call、apply(显示绑定)调用?如果是的话,this绑定的是指定的对象
  3. 函数是否在某个上下文对象中调用(隐式绑定)?如果是的话,this绑定的是那个上下文对象
  4. 如果都不是的话,使用默认绑定。如果在严格模式下,就绑定到undefined,否则绑定到全局对象。