1

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

原型

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 侦听器,这比单独调用每个原型函数要好。

谢谢。

4

3 回答 3

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/

于 2013-07-21T16:53:47.010 回答
0

best way实现这一目标的方法是:

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

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

于 2013-07-22T14:46:31.333 回答
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
于 2013-07-21T14:53:20.100 回答