()=> {}中的此范围

时间:2019-05-26 07:45:23

标签: javascript ecmascript-6 this arrow-functions

当我在对象内部使用() => {}时, 我有一些麻烦 这是我的代码

var arrowDeliveryBody = {
    name: 'Ben',

    handleMessage: (message, handler) => handler(message),

    receive: () => {
        this.handleMessage("Hello ", message => console.info(message + this.name))
    }
 }

 arrowDeliveryBody.receive()

错误消息为TypeError: this.handleMessage is not a function 但是如果我换了一些鳕鱼,例如

var arrowDeliveryBody = {
    name: 'Ben',

    handleMessage: (message, handler) => handler(message),

    receive: function() {
        this.handleMessage("Hello ", message => console.info(message + this.name))
    }
 }

 arrowDeliveryBody.receive()

没关系。

箭头函数在创建时捕获this的当前值,而我的receive函数在arrowDeliveryBody对象中,所以为什么this没指向到arrowDeliveryBody对象

所以给我一些想法或建议。

0 个答案:

没有答案