2

私はgrowlのようなメッセージを表示するためにJQueryプラグインを実行しています。これらのメッセージを管理するためにクラスが作成されました。プラグインなので、このクラスのインスタンスを格納するグローバル変数の作成に問題がありますか?

4

2 に答える 2

3

2つの解決策があります:

  • クラスをクロージャのスコープ(標準)のプライベート/ローカル変数にします。

(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 に答える