我有一个原型函数,例如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侦听器,这比单独调用每个原型函数更好。
感谢。
答案 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;
}
}
}
答案 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
中提到的那样。