两个 jQuery 块之间的范围

Scope between two jQuery blocks

有一个 old question 看起来很相似,我想这是对这个问题的相当基本的解决方案。

我有一些代码想分成两个不同的文件(希望不要设置 Webpack、Parcel 或其他一些模块化系统。)

我希望 jQuery 在每个文件中可用,因此将每个文件都包装在 jQuery(($) => {}); 闭包中。

但是,当我用 class 包装一个我想实例化的闭包时,另一个闭包中的代码不再可以访问它:

文件一(首先加载)。

jQuery(($) => {
  class someClass {
    constructor(){
      this.hello = $("#hello").html();
    }
  }
});

文件二

jQuery(($) => {
  let some_instance = someClass; # is not defined
});

我想也许我需要将第一个 jQuery 块分配给 const 并将其绑定到第二个,但还没有弄清楚如何。

虽然您可以将第一个脚本中的 class 分配给 window

jQuery(($) => {
  window.someClass = class someClass {
    constructor(){
      this.hello = $("#hello").html();
    }
  }
});

这是不规则的,需要全局污染,而且有点奇怪 - 对于专业人士,我真的建议尽可能使用 Webpack(或其他一些模块捆绑器)。它将使拆分更小的可维护模块变得更加容易,并且如果需要,将允许简单 minification/transpilation。

另请注意,您需要使用 new() 调用 class 来创建实例。

const someInstance = new someClass();

(也许根据 JS 约定大写 SomeClass