看了冴羽的文章“JavaScript深入之从ECMAScript规范解读this”,决定读一读this
的规范定义,梳理一下this。
this存在的场景
this
存在的场景肯定是函数执行的时候,那么有以下几种调用函数的方式:
- 直接调用:
foo()
,foo
中this
的值将会是window
或undeifined
,取决于是否是严格模式。 - 作为对象的方法调用:
obj.foo()
,this
的值将是obj
。 - 作为
new
操作符的一部分调用:new foo()
。 - 通过
apply
、call
、bind
调用:this
的值将被绑定为指定值。
然而,有特殊情况的存在: