在javascript中定义模块内部的函数

时间:2013-01-29 04:29:45

标签: javascript jquery

我试图定义一个函数,可以调用attachPicker:

(function(){
  $.fn.tagPicker = function(source){
    this.attachPicker();
  }
})(jQuery);

我试过了:

(function(){
    $.fn.tagPicker = function(source){
      this.attachPicker();
      //define attachPicker
      $.fn.attachPicker = function(){
        //code here
      }
    }
 })(jQuery);


(function(){
      $.fn.tagPicker = function(source){
          this.attachPicker();
          //define attachPicker
          this.attachPicker = function(){
            //code here
          }
      }
})(jQuery);

两人都扔掉了

Uncaught TypeError: Object [object Object] has no method 'attachPicker' 

如果我做了

(function(){
      $.fn.tagPicker = function(source){
        this.attachPicker();
      }
      $.fn.attachPicker() = function(){ //codes here };
})(jQuery);

有效。但我想在tagPicker中定义attachPicker,以便它可以访问源代码。任何人都可以解释为什么我试过的那些不起作用并给我任何建议?当然,如果在外面定义attachPicker,我知道我可以将source作为参数传递。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

在使用任何功能之前,您应该定义该功能

试试此代码

(function(){
      $.fn.tagPicker = function(source){

          //define attachPicker
          this.attachPicker = function(){
            //code here
          }
          this.attachPicker();
      }
})(jQuery);

你可以在这里测试: http://jsfiddle.net/s23py/ 你也可以通过一个对象来调用它: http://jsfiddle.net/s23py/2/