将脚本添加到 window 对象的最佳方法?

Hal*_*991 5 javascript window

我在 JavaScript/jQuery 插件开发中看到了一个熟悉的模式(Modernizr 使用了第一个示例),通过这种模式,函数很好地包装在 IIFE 中,并在window对象上全局定义。我想问的是,通过执行以下操作使您的插件/脚本在全球范围内可访问是否是个好主意:

window.myPluginName = (function (window, document, undefined) {
  // Plugin logic
})(window, document);
Run Code Online (Sandbox Code Playgroud)

我问这个是因为一些脚本/插件需要在调用它们的 DOM 中访问,或者在文档/文件中的其他地方访问。在插件内部,我有时也会看到:

(function (window, document, undefined) {
  window.myPluginName = function () {
    // Plugin logic
  }
})(window, document);
Run Code Online (Sandbox Code Playgroud)

甚至这个:

(function (window, document, undefined) {
  var myPluginName = function () {
    // Plugin logic
  }
  window.myPluginName = myPluginName;
})(window, document);
Run Code Online (Sandbox Code Playgroud)

我真的对设置背后的差异很感兴趣,如果有人比我有更多的经验,我会很友好地提供一些最适合开发的建议。谢谢!

Fel*_*ing 2

简短的回答:使用对您来说最有意义的一个。

更长的答案:唯一的区别是分配发生的位置,但在功能方面它们都是等效的他们中的任何一个都没有比另一个有任何优势或劣势。

注意:就目前情况而言,最后两个不起作用,因为window函数内部未定义。但我假设您实际上会将window对象作为参数传递给 IIFE。