分享人:禚洪宇
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
this是javascript的一个关键字,是函数内部的一个特殊对象(或this引用);this在不同的上下文执行环境中指代不同的对象,所以我们可以用同样的this代码输出不同的结果,从而简化代码。
会根据代码上下文语境自动改变其引用对象
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象。
1. 作为普通函数在全局环境中被调用
在全局环境里面,this 永远指向 window,因此在全局环境里作为普通函数被调用的时候,this 也是指向 window。
2.作为对象的属性被调用
如果函数作为一个对象的属性方法,并且被调用的时候,this 就指向这个对象。
3. 作为构造函数被调用
作为构造函数被调用的时候,this 代表它即将 new 出来的对象;
如果不加 new,表示即作为普通函数调用,指向 window。
4. 作为 call/apply/bind 方法的调用
作为 call/apply/bind 方法被调用的时候指向传入的值
5. 严格模式下面
在严格模式下,在全局环境中执行函数调用的时候 this 并不会指向 window 而是会指向 undefined
6. setTimeout、setInterval中的this
7. 构造函数 prototype 属性
8. Eval函数
9. 箭头函数
this 遇到return?
如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。
虽然null也是对象,但是在这里this还是指向那个函数的实例,因为null比较特殊。
function a(){
var user = "追梦子";
console.log(this.user); //undefined
console.log(this); //Window
}
a();
参考一:彻底理解js中this的指向
怎样改变this的指向?
BY :禚洪宇