首页 > 解决方案 > window.myClass 不是构造函数

问题描述

我有一个看起来像这样的 ES6 类文件:

import { BaseClass } from './xm/classes/class-file.js';

export class myClass extends BaseClass {
   constructor() {
      super();
   }

   createFormSession(formId, payload) {
     return new NewForm(formId, payload);
   }
}

class NewForm {
  constructor(formId, payload) {
    this.formId = formId;
    this.payload = payload;
  }
}

我收到这个错误,说期望 myClass 不是构造函数。

所以它似乎在期待 BaseClass 但它找不到它,我不清楚为什么,当它在我的本地开发服务器上工作时。

导致错误的实际代码行constructor()是引用第一个函数的位置,并且错误出现在 Chrome 浏览器的控制台中。

它被称为的方式:

var defaultUIHandler = new window.myClass()

我也试过:

var defaultUIHandler = new window.myClass()

标签: javascriptes6-class

解决方案


ES6 类名不会像浏览器中的其他顶级变量那样自动添加到全局对象中。这是 ES6 规范的一部分。window因此,除非您专门将它们分配为对象的属性,否则您无法通过对象访问它们window

所以,这段代码:

var defaultUIHandler = new window.myClass()

将无法正确找到myClass,因为默认情况下它不是window对象的属性。如果您已myClass在此范围内定义或将其导入此范围,那么您应该能够:

var defaultUIHandler = new myClass();

推荐阅读