this是什么?
this是执行上下文中一个属性。
this绑定的规则
默认规则
this默认在严格模式下绑定到undefined,非严格模式下绑定到全局对象
function foo(){
console.log('foo - this',this)
}
foo() //打印window对象
隐式绑定
调用位置是否存在函数上下文的引用
function foo(){
console.log('foo - this',this)
}
var obj = {}
obj.foo = foo
obj.foo()//打印结果 {foo: ƒ}
从结果可以看出 此时this指向obj
显示绑定
是否存在call,apply,bind的调用
硬绑定
是否存在new关键词的调用
规则
- 有new 关键字 this指向 new 的实例
- call,apply,bind 指向指定的对象
- 有上下文指向上下文
- 默认绑定window(非严格模式下)