代码之家  ›  专栏  ›  技术社区  ›  Val

jquery从var值调用函数

  •  0
  • Val  · 技术社区  · 15 年前
    (function($) {
    
    $.fn.myFoo= function (o){
        this.element = $(this)
    
        options = jQuery.extend({
             name: "defaultName",
             size: 5,
             global: true
          }, o);
    
        _min = function (){ //am i private method?
            alert('dud');
        }
        max = function (){ //am i public method?
            alert('max');
        }
        return this.o(); //o= 'max'
    }
    })(jQuery);
    

    问题1=如果要使用此行,是否可以调用上面的max方法/函数? $('#id').myFoo('max'); 问题2=我知道在jquery小部件上,下划线“u”会将该方法标记为私有。美元的情况也是这样吗?

    注意这一行 return this.o(); 这是错误的,只是为了证明我想完成什么

    1 回复  |  直到 15 年前
        1
  •  2
  •   Christian C. Salvadó    15 年前

    您的代码有一些问题:

    首先,当你运行它时,你将得到三个全局变量, max ,请 _min options .

    javascript是函数范围的,但是您应该使用 var 声明变量的语句,如果不使用它,并且在作用域链中找不到进行赋值的标识符,则它们将成为globall对象的属性。( window )

    第二,我认为你想调用一个作为字符串参数传递的函数,如果是这样,我建议你使用一个对象来分组你的函数,并且能够得到它们,如果你只是把你的函数定义为变量,它们就不会绑定到一个可访问的对象上。( 技术变量、参数和函数声明标识符绑定到不可访问的 Variable Object ),例如:

    (function ($) {
      $.fn.myFoo= function (o){
        var privateFunction = function (){ 
          alert('private');
        };
    
        var functions = {
          _min: function (){ 
            alert('_min');
          },
          max: function (){
            alert('max');
          }
        };
    
    
        functions[o](); // invoke the function
        // ...
        return this; // preserve the jQuery method "chainability"
      };
    })(jQuery);
    

    编辑: 如果要声明“private函数”(不能通过字符串参数调用),只需在 $.fn.myFoo 功能。

    它将可供您的所有“公共职能”(所有 functions 对象),但您将无法使用 o 争论。