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