微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery插件教程混乱

我不得不遗漏一些东西. jQuery插件教程在“Namespacing”中找到了 here – > “插件方法”部分,有潜伏在下面的插件声明.我没有得到的是方法变量的范围;我的意思是,不应该将方法定义为工具提示中的var吗?一旦这个匿名函数执行,如果我理解正确,方法就会超出范围,因为它被定义为函数中的var.当工具提示调用时,工具提示如何引用将超出范围的var方法?我错过了什么?

(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 );

解决方法

分配给$.fn.tooltip的函数closure [Wikipedia],因此可以访问所有更高的作用域.

当外部函数返回时,方法不会被销毁,因为闭包仍然引用它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐