2016-02-27 82 views
1

我在Aurelia大街的应用程序下面的代码:奥里利亚transpiler: “这个” 为 “null”

import {digit} from "../util/random" // generates a random digit [0,9] 

export class UnitedStates { 

    zipCode() { 
    return ""+digit(5); 
    }; 

    zipPlus4() { 
    return this.zipCode()+"-"+digit(4); 
    }; 

    ... 

} 

收到错误TypeError: Cannot read property 'zipCode' of null上的zipPlus4身体。在开发者工具中检查发现thisnull

为什么thisnull,以及如何解决这一问题?

+2

如何调用'zipPlus4'方法? –

回答

2

这是译者的问题。回想一下,箭头函数表示法保持词法this(或更多地为read here)。所以,当Babel和其他transpiler进入一个新的范围时,他们维护一个本地的这个变量,以便它可以从任何子范围访问。通常,这个变量是_this

有时候,像DevTools这样的调试器很难理解源代码,并且他们报告了一个空值this。原来,这只是在检查代码时;运行代码时,它可以正常工作。

那么当报告为空时,如何检查this的值?通常从控制台检查_this。这会给你真正使用的this值。

+0

如果这解决了您的问题,请务必为了将来的用户注册并接受,谢谢! –