THIS的指向

2018-08-24 | 6分钟 | yrobot | THIS,指向

本页目录:
this 的建立
this 指向
this 规则概括

this 的建立

  • 一般函数在预编译过程中生成的 AO 上下文
  • AO 中除了函数内的一些属性和函数参数外,还有argumentsthis(箭头函数没有)。
  • 所以函数(除了箭头函数)预编译过程会生成this隐式对象,并 默认指向 window。

this 指向

  • 而在预编译过程中,this会默认指向window
  • new操作时,会在函数内生成一个隐式this对象,而同时改变 AO 中this指向为本this
  • obj.func()调用的时候,会将func()内的this指向改为obj

以上this的修改是在functhis的情况下,箭头函数没有 this,直接沿着作用域链向上寻找 this

注意函数作用域链的数据是由函数参数、函数内声明组成,fun.prop 无法 增加或更改作用域

this 规则概括

  1. 函数编译过程中 AO 上下文中this默认指向window
  2. 全局作用域里this指向window
  3. call/apply可以利用参数改变this的指向
  4. obj.fun()调用时,fun()AO 中this指向 obj (new 生成对象时默认return this,所以只有this.xxx的属性才能被访问到)
  5. html 元素脚本中,函数参数中的this指向元素本身