我在 JavaScript/jQuery 插件开发中看到了一种熟悉的模式(Modernizr 使用了第一个示例),通过这种模式,函数很好地包装在 IIFE 中,并在 window 对象上全局定义.我想问的是,通过执行以下操作让您的插件/脚本可在全局范围内访问是否是个好主意:
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。
关于javascript - 将脚本添加到窗口对象的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185411/