javascript - 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()
解决方案
ES6 类名不会像浏览器中的其他顶级变量那样自动添加到全局对象中。这是 ES6 规范的一部分。window
因此,除非您专门将它们分配为对象的属性,否则您无法通过对象访问它们window
。
所以,这段代码:
var defaultUIHandler = new window.myClass()
将无法正确找到myClass
,因为默认情况下它不是window
对象的属性。如果您已myClass
在此范围内定义或将其导入此范围,那么您应该能够:
var defaultUIHandler = new myClass();
推荐阅读
- python - 我无法将 OpenCV 安装到 python。按照 OPENCV 网站上的说明进行操作,但出现以下错误:
- google-apps-script - Mode set to have the script make calls only every 2 minutes inside the every 1 minute trigger. (Google App Script)
- c# - 跳转/投掷编码或动画问题
- laravel - 如何在 Laravel 中修改登录错误消息?
- git - Git 流程小修复
- python - Python在文本文件中找不到第二行
- rust - Rust 中自引用结构的替代方案?
- python - 使用 numpy 2D 热图的 seaborn 轮廓
- docker - 如何从其他计算机连接到 minikube 暴露的 Nodeport
- java - Java/Kotlin Selenium Chromedriver 2Captcha