首页 文章

Aurelia transpiler:“this”是“null”

提问于
浏览
1

我的Aurelia应用程序中有以下代码:

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

export class UnitedStates {

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

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

  ...

}

zipPlus4 的主体上获得错误 TypeError: Cannot read property 'zipCode' of null . 在开发人员工具中检查显示 thisnull .

为什么 this null ,我该如何解决这个问题?

1 回答

  • 2

    这是转换器的问题 . 回想一下,箭头函数表示法维护词汇 this (或更多read here) . 因此,当Babel和其他转换器进入新范围时,它们会维护一个本地变量,以便可以从任何子范围访问它 . 通常,此变量为 _this .

    有时,像DevTools这样的调试器很难理解源图,并报告了一个null this . 事实证明,这只是在检查代码时;运行代码时,它可以正常工作 .

    那么当报告为空时,如何检查 this 的值?通常从控制台检查 _this . 这将为您提供正在使用的真正 this 值 .

相关问题