两个 jQuery 块之间的作用域

Scope between two jQuery blocks

提问人:MikeiLL 提问时间:9/15/2021 更新时间:9/15/2021 访问量:35

问:

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

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

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

但是,当我用要实例化的类包装它时,另一个闭包中的代码无法再访问它:

文件一(首先加载)。

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

文件二

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

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

JavaScript jQuery 闭包

评论


答:

2赞 CertainPerformance 9/15/2021 #1

虽然您可以将第一个脚本中的类分配给窗口

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

这是不规则的,需要全局污染,而且有点奇怪 - 对于专业的东西,如果可能的话,我真的建议使用 Webpack(或其他一些模块打包器)来代替。这将使拆分较小的可维护模块变得更加容易,并且如果需要,可以很容易地缩小/转译。

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

const someInstance = new someClass();

(也许按照 JS 惯例大写)SomeClass