对象中的方法的this指向
情形1:方法中返回箭头函数
x = 11
obj = {
x:22,
dbl:function(){
return ()=>{return this.x}
}
}
console.log(obj.dbl()()) //答案为22
情形2:方法中返回匿名函数
x = 11
obj = {
x:22,
dbl:function(){
return function(){return this.x}
}
}
console.log(obj.dbl()()) //答案为11
情形3:以箭头函数定义方法
x = 11
obj = {
x:22,
dbl:()=>{
return function(){return this.x}
}
}
console.log(obj.dbl()()) //答案为11
总结:在对象的方法中,如果以箭头函数定义方法,则this指向window。因为箭头函数没有自身的this,只能寻求父执行上下文(函数或者对象)中的this。而以function(){}形式定义方法时,如果以return形式返回箭头函数,则this指向function(){}的上下文即为obj的this;如果以return形式返回匿名函数则指向window。