this 绑定规则:
默认绑定:this 绑定到全局对象
隐式绑定:一般绑定到调用对象,如 obj.foo 绑定到 obj
显式绑定:通过 call、apply 指定 this 绑定到哪里
硬绑定:使用 bind 函数
new 绑定:使用 new 关键词,绑定到当前函数对象
this 绑定规则优先级:
默认绑定 < 隐式绑定 < 显式绑定 < new 绑定
判断 this 最终指向,总体流程:
1.判断函数调用时是否使用了 new,即 new 绑定,如果使用了,则 this 绑定的是新创建的对象。
2.函数调用是否使用了 call、apply 等显式绑定,或者硬绑定(bind),如果是的话,this 指向指定的对象。
3.函数是否在某个上下文对象中调用,即隐式绑定,如 obj1.foo,如果是的话,this 指向绑定的那个上下文对象。
4.以上 3 点都不涉及的话,则采用默认绑定,但是需要注意的是,在严格模式下,默认绑定的 this 是 undefined,非严格模式下绑定到全局对象。








网友评论