箭头函数的this,指向函数定义时所处的对象,默认使用其父级的this(例如window)。
1.对象方法内的匿名函数
var obj = {
f1: function(){
console.log(this);//指向obj
var f2=function(){ //这里将一个匿名函数赋值给f2,f2函数没有被挂靠到任何一个对象上去
console.log(this);//所以这里的this指向默认的window(严格模式下是undefind)
};
f2();
}
};
obj.f1();//先输出obj后输出window
f2是作用域为f1的一个匿名函数,没有被挂靠到对象中,所以它内部的this指针默认指向全局对象window(严格模式为undefind)。
2.使用箭头函数改写
var obj = {
f1: function(){
console.log(this);//指向obj
var f2=() =>{
console.log(this);//这里的this和f1是一样的,为obj
};
f2();
}
};
obj.f1();//输出obj和obj
把f2改写为箭头函数,箭头函数的this和他的父级作用域f1一样,指向obj。
3.当箭头函数为对象内方法时
var obj = {
f3: ()=>{
console.log(this);
}
};
obj.f3();//输出window
当箭头函数作为对象的方法时,里面的this不再指向此对象,而是指向对象所在的作用域(这里是window)。