带jQuery的JavaScript命名空间

带jQuery的JavaScript命名空间,javascript,jquery,Javascript,Jquery,如何管理自定义JavaScript库的命名空间取决于jQuery 您是否创建自己的名称空间,比如说foo,并在其中添加对象?e、 g.foo.myClass,foo.myFunction 还是将对象添加到jQuery的命名空间?e、 g.jQuery.myClass,jQuery.myFunction 哪种做法更常见?为什么?详细讨论了如何编写jQuery插件/库 不要做什么: (function( $ ){ $.fn.tooltip = function( options ) { //

如何管理自定义JavaScript库的命名空间取决于jQuery

您是否创建自己的名称空间,比如说
foo
,并在其中添加对象?e、 g.
foo.myClass,foo.myFunction

还是将对象添加到jQuery的命名空间?e、 g.
jQuery.myClass,jQuery.myFunction

哪种做法更常见?为什么?

详细讨论了如何编写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无关)。

这取决于库的功能

  • 如果您要扩展jQuery对象实例的功能,您应该使用
    jQuery.fn
    ,如中所述

  • 如果您要创建的实用程序被视为是对
    window.jQuery
    中提供的实用程序的添加,那么我认为使用该名称空间没有问题(只要小心命名)

  • 如果它确实是它自己的独立库,不打算被视为jQuery的扩展,而是依赖于jQuery的功能,那么一定要使用您自己的名称空间


LOL不要将您的属性添加到jQuerys名称空间…深入了解非jQuery插件管理的RequireJS;)你的网站被劫持了。dvt.name处的页面重定向到Baaaddd位置。