一、this是什么
一个函数被调用时候发生的绑定,this指向(内容)取决于函数在哪里执行
执行环境(执行上下文)
- 全局执行环境
- 函数执行环境
- eval环境
函数调用过程
- 函数被调用,会创建一个函数执行环境(执行上下文)
- 执行上下文会包含变量对象(函数调用栈,调用方式,参数等属性)
- this就是用来记录这些的一个属性,在函数调用时候被绑定
this指向由函数执行时候确认(和定义时无关)
二、绑定规则-》确定this指向
1、默认绑定——函数独立调用
当我们直接去调用函数的时候,函数没有进行任何的修饰,则:
- 此时我们可以看做绑定是默认绑定
- 默认绑定this指向全局对象
function foo(){
console.log(this.a)
}
var a = 2
foo()//2
注意:我们如果在函数内使用严格模式,则this会绑定到undefined
2、隐式绑定——被对象引用(函数是否有上下文对象)
如果函数运行环境不是全局,而存在上下文对象(或者是被对象引用了),那么