ES6箭头失去了封闭范围

时间:2016-05-27 07:40:55

标签: javascript ecmascript-6

您好我的印象是,如果您使用箭头功能,这是指封闭范围,如以下链接所述

https://www.sitepoint.com/bind-javascripts-this-keyword-react/

  
      
  1. ES2015 Arrows
  2.         

    ES2015规范引入了箭头函数语法   写函数表达式。和普通人一样   函数表达式,它们也可以具有隐式返回和大多数   重要的是,他们总是使用封闭的价值   范围。

在下面的示例中,this未引用封闭范围而是引用全局范围。

addMeasurement(username,jsonObject){
    ...
    return fetch(measurementURL,
    {
        method: 'PATCH',
        body: jsonStringify
    }).then( (res) => { 
        // this below refers to the global context. 
        //Instead of the current instance and hence is undefined
        this.addMeasurementToAudit(username,jsonObject)             
        res.json() 
    });
}

没有箭头并明确地绑定它,按预期工作:

addMeasurement(username,jsonObject){
    ...
    return fetch(measurementURL,
    {
        method: 'PATCH',
        body: jsonStringify
    }).then( function success(res) { 
        //this refers to the enclosing instance and works as expected
        this.addMeasurementToAudit(username,jsonObject)
        res.json() 
    }.bind(this));
},

0 个答案:

没有答案