0

我偶然发现了一种我无法理解的行为。更精通 JS 的人可以快速浏览一下它。

我很抱歉发布屏幕截图而不是在这里设置一个工作示例,但我希望专家能够快速识别出原因是什么就足够了。

  • 我在 ES6 模块中有一个 JS 类
  • 我将一个函数传递给类的构造函数
  • 我将一个事件处理程序附加到一个 HTMLElement 并且在这个处理程序中我希望这个函数可以访问。

如果我不使用 ES6 模块,它是可以访问的,我已经检查过了。所以原因必须与 ES6 模块的范围有关,我怀疑影子 DOM 可能与此有关。

所以此时,第 8 行notifyController定义了函数浏览器控制台窗口的图片,功能已定义

但是当事件处理程序运行时,它是未定义的。浏览器控制台窗口的图片,未定义功能

怎么来的?

先感谢您。


解决了:

原因原来是 View 构造函数被调用了两次。非常感谢@Bergi,他认为这是一个可能的原因。

在模块文件中手动使用预期参数一次。另一次自动没有预期的参数,因为 html 包含一个自定义元素,该类被分配到该元素。

简而言之:原因是自定义元素的使用不当


我宁愿把问题留在这里,以防其他人有类似的问题

4

0 回答 0