我需要能够公开一个对象的方法以供事件触发器调用。我还想通过为给定对象提供方法列表及其参数来自动注册这些触发器。这是我所拥有的(此处为jsfiddle):
function A() {
}
A.prototype = {
register: function(cbname, cbargs, context) {
args = ['context'].concat(cbargs);
var callback = new Function(args, "context." + cbname + "(" + cbargs.toString() + ");");
$(document).bind(cbname, callback);
document.write(callback.toString() + "<br />");
}
};
function B() {
}
B.prototype = {
add: function(l, r) {
document.write(l + r);
}
};
$(function() {
var a = new A();
var b = new B();
a.register('add', ['l', 'r'], b);
$(document).trigger('add', [b, 1, 2]);
});
创建的回调具有似乎是正确的代码:function anonymous(context,l,r) { context.add(l,r); }
但是运行时我在控制台中收到错误消息说Uncaught TypeError: Object #<Object> has no method 'add'
. 我究竟做错了什么?