我正在做一个JQuery插件来显示像咆哮这样的消息。为了管理这些消息,创建了一个类。因为它是一个插件,所以创建一个全局变量来存储这个类的实例存在一些问题?
有两种解决方案:
- 使类成为闭包范围(标准)中的私有/局部变量:
(function($) {
function MyClass() {...};
$.fn.myPlugin = function(opts) {
var instance = new MyClass();
...
return this;
};
})(jQuery);
- 对类使用 jQuery 命名空间(请注意,现在每个人都可以实例化它,只有在它应该是公共的时才这样做):
jQuery.MyPluginClass = function() {...};
jQuery.fn.myPlugin = function(opts) {
var instance = new jQuery.MyPluginClass();
...
return this;
};
全局
通常是禁忌。看这里:
http://dev.opera.com/articles/view/javascript-best-practices/#avoidglobals
从本质上讲,它们使命名空间混乱,并使您有可能在其他地方覆盖全局,因为您的变量最终可能属于与其他脚本相同的范围。该网站还提供了一些有关如何处理此问题的很好的例子。
因此,总而言之,最佳做法是不使用全局变量,而是将它们放在自己的命名空间中。希望这有所帮助,很确定这就是您的要求/内容。