我是一个有点绿色的程序员,对 javascript/jquery 很陌生,但我认为我理解 javascript 事件。显然不是。我无法让事件侦听器按我的意愿工作。
给定javascript:
var Thing = {
//stuff
update: function() {
$.event.trigger({type:'stateUpdate', more:stuff});
}
};
var Room = {
//more stuff
updateHandler: function (e) {
//handle event here
}
};
如果我做jquery:
$(document).on('stateUpdate', $Room.updateHandler);
然后它工作正常,但我也做不到
$(Room).on('stateUpdate', $Room.updateHandler);
或者
Room.addEventListerner('stateUpdate', $Room.updateHandler);
第一个什么都不做,第二个给出 .addEventListerner is not a function 错误。
我已经用谷歌搜索了几个小时,无法弄清楚。我发现 .addEventListener 仅适用于实现 EventListener 的对象、有关 handleEvent 的内容以及有关自动实现 EventListener 的函数的内容。没有关于如何使对象实现它的信息。有没有办法将侦听器添加到不是函数的 javascript 对象?我是否必须创建一个事件处理程序对象,或者使用“文档”或“窗口”并让它调用处理程序?这看起来真的很丑。
对象首先应该是函数吗?那行得通吗?似乎目前的观点是,让一切功能化只是试图让 javascript 变成它不是的东西。