イベント トリガーによって呼び出される 1 つのオブジェクトのメソッドを公開できる必要があります。また、特定のオブジェクトのメソッドとその引数のリストを提供することで、これらのトリガーを自動的に登録したいと考えています。ここに私が持っているものがあります( jsfiddle here ):
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'
。私は何を間違っていますか?