2011-01-29 17 views
6

カスタムJavaScriptライブラリのネームスペースを管理する方法はjQueryによって異なりますか?jQueryを使用したJavaScriptネームスペース

あなた自身の名前空間を作成しますか。たとえばfooとし、そこにオブジェクトを追加しますか?例えばfoo.myClass, foo.myFunction

jQueryの名前空間にオブジェクトを追加しますか?例えばjQuery.myClass, jQuery.myFunction

どちらがより一般的な習慣であり、なぜですか?

+1

LOLは非jQueryプラグイン管理のためのRequireJSに... jQuerys名前空間に –

+1

ダイブをあなたの特性を追加しません。) – BGerrissen

答えて

4

これはライブラリの機能によって異なります。

  • あなたはjQueryのオブジェクトのインスタンスの機能を拡張している場合his answer@David Titarencoで非常にうまく説明したように、あなたはjQuery.fn使用すると思います。

  • window.jQueryで提供されているものの追加であると見なされるユーティリティを作成している場合は、その名前空間の使用に問題はありません(名前付けに注意している限り)。

  • ではないでは、jQueryの拡張機能と見なされていて、jQueryの機能に依存しているので、間違いなく独自の名前空間を使用してください。

7

This articleは、jQueryプラグイン/ライブラリを非常に細かく記述しています。いけないこと

(function($){ 

    $.fn.tooltip = function(options) { // THIS }; 
    $.fn.tooltipShow = function() { // IS }; 
    $.fn.tooltipHide = function() { // BAD }; 
    $.fn.tooltipUpdate = function(content) { // !!! }; 

})(jQuery); 

何をすべきか:

(function($){ 

    var methods = { 
    init : function(options) { // THIS }, 
    show : function() { // IS }, 
    hide : function() { // GOOD }, 
    update : function(content) { // !!! } 
    }; 

    $.fn.tooltip = function(method) { 

    // Method calling logic 
    if (methods[method]) { 
     return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } else if (typeof method === 'object' || ! method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error('Method ' + method + ' does not exist on jQuery.tooltip'); 
    }  

    }; 

})(jQuery); 

私はまた、JavaScriptの(非jQueryの関連)に名前空間をするための様々な方法については、昨年blog postを書きました。

+0

あなたのサイトが乗っ取られました。 dvt.nameのページがbaaaadddの場所にリダイレクトされます。 –

関連する問題