this是什么
- 函数可以在不同得运⾏环境执⾏,因此需要⼀种机制,能够在函数体内部获得当前得运⾏环境。在 函数内部指代当前得运⾏环境 Javascript为什么有 this设计⸺内存数据结构 对象 函数(本质是也是对象) 都会有⾃⼰独⽴得内存地址,在调⽤函数 以及对象引⽤的时 候,需要知道当前得运⾏环境 this应运⽽⽣ 。
this的绑定
确认函数在代码中被调⽤的位置,从调⽤栈中分析出真正的调⽤位置 从⽽决定this的绑定 =》可 以借助chrome的调试⼯具来分析
-
确认调⽤规则
- 默认绑定 即独⽴函数的调⽤ strict mode 严格模式下⽆法使⽤默认绑定 this会绑定导 undefined ⾮严格模式下默认绑定到导全局
- 隐式绑定 调⽤位置是否有上下⽂对象,函数引⽤有上下⽂对象的时,会默认把this绑定到这 个上下⽂对象,对象属性引⽤链中只有最后⼀层影响调⽤位置: a.b.foo() this绑定为b
- 显式绑定: call apply
- new绑定
this 绑定优先级 new绑定》显⽰绑定>上下⽂调⽤的隐式绑定>默认绑定
⽂章推荐:http://www.ruanyifeng.com/blog/2018/06/javascript-this.html