访问Javascript原型函数

时间:2013-07-21 14:51:03

标签: javascript function input prototype

我有一个原型函数,例如event。

原型

Func("input_element_id").event("keyup",function(){
    alert("Works on keyup in an Input!");
}

Func.prototype= {
    keyup: function(func){
         //adding event listener and callback using func
    },
    event: function(e,func) {
         //what to do here to call function "keyup"
    }
};

原型名称位于变量e中。但是如何使用变量名称调用function

我这样做,所以传递“keyup keydown”会添加keyup和keydown侦听器,这比单独调用每个原型函数更好。

感谢。

3 个答案:

答案 0 :(得分:2)

var Func = function(element){
  this.element = element;
};

Func.prototype = {
    keyup: function(handler){
      this.element.onkeyup = handler;
    },
    event: function(e,handler){
        switch(e){
            case 'keyup':
              return this.keyup(handler);
            break;
        }
    }
}

http://jsfiddle.net/YDekw/

答案 1 :(得分:0)

使用this访问接收对象。

this.keyup(func);

假设有一个体面的浏览器或ES5垫片,看起来你想要这样做:

e.split(" ").forEach(function(f) {
    this[f](func);
}, this);

请注意,它只是与点运算符一起使用的任何对象,并且可以是任何东西。例如:

var f = new Func("input_element_id");
window.event = f.event;
window.event(); // this is window

答案 2 :(得分:0)

实现此目的的best way是:

events: function(events,func) {
            this[events](func);
        }
    }

感谢CrazyTrain,正如他在Comments中提到的那样。