将脚本添加到窗口对象的最佳方法

Best method for adding your script to the window object?

本文关键字:最佳 方法 对象 窗口 脚本 添加      更新时间:2023-09-26

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

window.myPluginName = (function (window, document, undefined) {
  // Plugin logic
})(window, document);

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

(function (window, document, undefined) {
  window.myPluginName = function () {
    // Plugin logic
  }
})(window, document);

甚至这个:

(function (window, document, undefined) {
  var myPluginName = function () {
    // Plugin logic
  }
  window.myPluginName = myPluginName;
})(window, document);

我真的很好奇这些设置背后的差异,如果有比我更有经验的人能提供一些建议,告诉我哪一个最好用于开发。非常感谢。

简短回答:使用对您最有意义的答案。

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

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