我偶然发现了一种我无法理解的行为。更精通 JS 的人可以快速浏览一下它。
我很抱歉发布屏幕截图而不是在这里设置一个工作示例,但我希望专家能够快速识别出原因是什么就足够了。
- 我在 ES6 模块中有一个 JS 类
- 我将一个函数传递给类的构造函数
- 我将一个事件处理程序附加到一个 HTMLElement 并且在这个处理程序中我希望这个函数可以访问。
如果我不使用 ES6 模块,它是可以访问的,我已经检查过了。所以原因必须与 ES6 模块的范围有关,我怀疑影子 DOM 可能与此有关。
所以此时,第 8 行notifyController
定义了函数。
怎么来的?
先感谢您。
解决了:
原因原来是 View 构造函数被调用了两次。非常感谢@Bergi,他认为这是一个可能的原因。
在模块文件中手动使用预期参数一次。另一次自动没有预期的参数,因为 html 包含一个自定义元素,该类被分配到该元素。
简而言之:原因是自定义元素的使用不当
我宁愿把问题留在这里,以防其他人有类似的问题