摘要
我们在平时的JS开发中this对象会非常常用,但是很多时候对于this指向又有些搞不懂到底指向哪个对象。除了es6新加的箭头函数外,一般来说:哪个对象调用函数,this就指向哪个对象。
1、普通函数调用
这个情况指向全局对象window,下面代码结果也是。
function aa(){
console.log(this);
}
aa();//window
结果是:
2、对象函数调用
这个相信不难理解,就是哪个对象调用,this指向哪里;同样的下面代码演示:
const aa={
bb:123,
fn:function(){
console.log(this);
}
}
aa.fn();//aa对象
结果是:
3、箭头函数的调用
在es6新增的箭头函数里面,是没有 this的
,箭头函数里面的 this
是继承外面的环境。同理代码演示。
const a1 = {
b1:111,
fn1:function(){
setTimeout(function(){
console.log(this);
})
}
}
const a2 = {
b2:222,
fn2:function(){
setTimeout(() => console.log(this))
}
}
a1.fn1();//windows
a2.fn2();//a2
结果是:
有1可以知道,a1结果是全局的window对象
由箭头函数this定义可知,a2结果是a2对象;代码结果证明正确。