- this是调用时被绑定的,完全取决于函数的调用位置
调用位置
调用位置就是函数被调用的位置,要寻找调用位置就要分析调用栈(就是为了到达当前执行位置所
调用的所有函数)。调用位置就在当前正在执行的函数的前一个调用中。this的绑定规则
- 默认绑定
- 隐式绑定
- 显示绑定
- new绑定
- 判断this(优先级)
- 函数是否在new中调用(new 绑定)?如果是的话this绑定的新创建的对象
- 函数是否通过call、apply(显示绑定)调用?如果是的话,this绑定的是指定的对象
- 函数是否在某个上下文对象中调用(隐式绑定)?如果是的话,this绑定的是那个上下文对象
- 如果都不是的话,使用默认绑定。如果在严格模式下,就绑定到undefined,否则绑定到全局对象。