2016-08-16 83 views
5

我试图访问该我的箭函数内里:这是不明确的箭头功能

import myObject from '../myObjectPath'; 
export const myClass = Fluxxor.createStore({ 
    initialize() { 
     this.list = []; 
     this.id = null; 
    }, 
    myOutsideFunction(variable1) { 
     // here this in NOT undefined 
     myObject.getMyList(this.id, (myList) => { 
      // here this in undefined 
      this.list = myList; 
     } 
    }); 
)}; 

但箭头函数内部它在马回调函数,这是不确定的!

我使用通天transpile代码:

myOutsideFunction: function myOutsideFunction() { 
    var _this = this; 
    myObject.getMyList(function (myList) { 
     _this.list = myList; 
    }); 
}, 
+0

绑定'this',或将其存储在箭头函数范围之外的临时变量中。 – Jite

+0

'this'的值取决于调用myOutsideFunction的方式。它怎么叫? –

+1

@Jit使用箭头函数的全部想法是不必绑定这个! – Besat

回答

4

如果thisundefined箭头函数中,它是不确定的箭头之外也是如此。箭头功能只是捕捉周围范围的this

在这种情况下,您声明myOutsideFunction作为对象字面值的方法,并且永远不会绑定它或执行其他任何可以将其与对象调用为this的对象。

调试时,请记住,转换器可以重命名变量(并且必须重命名this才能正确捕获)。即使原始值不是原始值,在没有包含重命名的源映射的控制台中使用原始名称也会显示undefined。确保您在手表或控制台命令中使用了转录名称。

+0

奇怪的原因是,它在函数调用之前被写入'//这里在NOT undefined'中,所以'严格地说,这个'不应该在箭头函数 –

+0

@ oliv37中未定义,这是不可能的。箭头功能是一种语言功能,并且始终会收到相同的“this”。我不知道有任何运行时出现错误(因为它对箭头函数非常重要)。 – ssube

+0

这是我虽然!它不应该是可能的!但我已经测试了几次,并且我在内部的箭头函数中获得了未定义的内容,但是在调用它之前它并不是未定义的 – Besat