想要在哪里使用箭头功能,以便返回'正确'。
let mama2 = {
children:12,
surname: true,
town: 'umuadi',
school:'imo state university',
mamaChild:() => {
if (this.surname){
return 'correct'
}else{
return 'failed'
}
}
}
let mama3 = {
children:12,
surname: true,
town: 'umuadi',
school:'imo state university',
mamaChild:function() {
if (this.surname){
return 'correct'
}else{
return 'failed'
}
}
}
我想知道这两个代码之间的区别,为什么它会给我一个不同的结果。
当我在我的控制台上运行此代码时,第一个代码会给我“失败”的结果,第二个代码会给我“正确”的结果。
答案 0 :(得分:2)
在箭头函数中使用this
时,它引用window
个对象。
在正常函数中使用this
时,它引用当前对象。
您可以在两种情况下控制日志this
以查看差异。
let mama2 = {
children: 12,
surname: true,
town: 'umuadi',
school: 'imo state university',
mamaChild: () => {
console.log(this); // window object
if (this.surname) {
return 'correct'
} else {
return 'failed'
}
}
}
mama2.mamaChild();

let mama3 = {
children: 12,
surname: true,
town: 'umuadi',
school: 'imo state university',
mamaChild: function () {
console.log(this); // mama3 object
if (this.surname) {
return 'correct'
} else {
return 'failed'
}
}
}
mama3.mamaChild();

答案 1 :(得分:0)
箭头函数将this
的上下文绑定到外部作用域,在这种情况下,它不是您要引用的对象。当您使用普通function()
时,this
引用具有您要检查的值的对象。