# this

# this是什么

this 就是一个指针,总是指向最后调用它的对象,即代表着它的直接调用者。

# 为什么要有this

this 机制提供了更优雅的方式来隐含地“传递”一个对象引用,导致更加干净的API设计和更容易的复用. 比如类里面的函数,使用多个内部变量

# 判断方法

优先级从上到下

  1. new 调用?绑定到新创建的对象
  2. call、apply、bind?绑定到指定的对象
  3. 由上下文对象调用?绑定到那个上下文对象(隐式调用)
  4. 默认绑定:在严格模式下绑定到undefined,否则绑定到全局对象

# 箭头函数

箭头函数不使用上述规则,上述规则无法改变箭头函数的this指向。箭头函数会继承外层函数调用的this绑定,就像self = this机制一样.

既:箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。其执行父级上下文中的this.

# new做了什么

  1. 创建一个新对象
  2. 新对象原型指向构造函数原型对象
  3. 将构造函数的this指向新对象,并执行构造函数(构造函数apply)
  4. 返回新对象

# todo手写

this 基础欠手写部分 (opens new window)