想要我在哪里使用箭头功能,所以它返回'正确'

时间:2017-12-02 06:45:40

标签: javascript

想要在哪里使用箭头功能,以便返回'正确'。

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'
        }
    }
}

我想知道这两个代码之间的区别,为什么它会给我一个不同的结果。

当我在我的控制台上运行此代码时,第一个代码会给我“失败”的结果,第二个代码会给我“正确”的结果。

2 个答案:

答案 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引用具有您要检查的值的对象。