默认绑定
- 全局环境下this指向window
- 函数独立调用时,函数内部this指向window
- 被嵌套的函数独立调用时,this指向window
- IIFE自执行函数表达式中,this指向window
- 闭包中this指向window
隐式绑定
当函数作为对象中的方法时,this指向该方法的直接对象
隐式丢失
- 将函数复制别名
- 将函数作为参数传递
- 函数作为内置函数时
settimeout(function(){ //this指向window },3000);
- 间接调用
显式绑定
- Object.call()
- Object.apply()
- Object.bind()
new绑定
使用new实例化对象时,对象的this指向当前实例
对象的constructor属性指向构造函数
严格模式
- 独立调用函数内部的this指向undefined