最好的编码实践JavaScript

时间:2012-06-27 19:21:55

标签: javascript jquery

我正在做一个JQuery插件来显示像growl这样的消息。要管理这些消息已经创建了一个类。因为它是一个插件,在创建一个全局变量来存储这个类的实例时存在一些问题吗?

2 个答案:

答案 0 :(得分: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;
};

答案 1 :(得分:2)

全球通常是禁忌。见这里:

http://dev.opera.com/articles/view/javascript-best-practices/#avoidglobals

基本上,它们会混淆命名空间,让您在其他地方覆盖全局覆盖,因为您的变量可能最终落在与其他脚本相同的范围内。该网站还提供了一些关于如何处理这个问题的好例子。

总而言之,最佳做法是不使用全局变量,而是将它们放在自己的命名空间中。 希望这有所帮助,非常肯定这就是你要求/关于的。