一、全局环境
全局环境中,this
始终指向window
,即全局对象:
console.log(this); // window
二、普通函数调用
1、非严格模式下,函数的this
指向undefined
function f1(){
console.log (this);
}
f1();//window
2、严格模式下,函数的this
指向undefined
function f1(){
"use strict";
console.log (this);
}
f1();//undefined
三、构造函数调用
构造函数中的this
指向new
出来的新对象。
构造函数是个函数,this
指向的是个对象,this
是指不到构造函数去的。
使用new
关键字调用构造函数,会先创建一个新的对象,再将构造函数的作用域赋给新对象(因此this
就指向了这个新对象);
要保证this指向正确,必须用
obj.xxx()
的形式调用!
四、箭头函数
箭头函数没有自己的 this ,箭头函数内this指向的就是定义时所在的对象