我正在做一个 JQuery 插件来显示像咆哮这样的消息。管理这些消息已经创建了一个类。因为是插件,所以创建一个全局变量来存储这个类的实例有什么问题吗?
问问题
202 次
2 回答
3
有两种解决方案:
- 使类成为闭包范围内的私有/局部变量(标准):
(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;
};
于 2012-06-27T19:28:05.480 回答
2
全局变量通常是禁忌。看这里:
http://dev.opera.com/articles/view/javascript-best-practices/#avoidglobals
从本质上讲,它们使命名空间变得混乱,并让您可以在其他地方覆盖全局,因为您的变量最终可能会落入与其他脚本相同的范围内。该网站还提供了一些很好的例子来说明如何处理这个问题。
所以总而言之,最佳实践是不使用全局变量,而是将它们放在自己的命名空间中。希望这会有所帮助,很确定这就是您所要求的/关于的。
于 2012-06-27T19:26:04.797 回答