我想将一个事件处理程序绑定到我的(动态)javascript对象,但它并不像我想的那样工作。
你知道我怎么能解决它吗?
我想要的是在自定义事件上调用对象函数。或者换句话说,我想将事件监听器绑定到我的对象的更新函数。
例如我有我的演示对象:
var Demo = function (name) {
this.name = name;
var eventCounter = 0;
this.updateCounter = function () {
eventCounter++;
}
//...
};
然后我从中创建多个动态实例,例如
var names = ["Jon", "Doe", "Max", "Mustermann"]
for(var i in names) {
new Demo(names[i])
}
有时我想用自定义事件更新此Demo实例。
document.dispatchEvent(new CustomEvent("CUSTOMEVENT"));
所以我的问题是,我怎样才能实现类似下面的内容
document.addEventListener("CUSTOMEVENT", function(){
// how to get the dynamic Demo instance?
// i want something like Demo.updateCounter()
});
我的想法是将演示对象推送到像
这样的数组中var names = ["Jon", "Doe", "Max", "Mustermann"]
var elementsToUpdate = [];
for(var i in names) {
elementsToUpdate[i] = new Demo(names[i])
}
然后在事件监听器中我可以通过
访问它们document.addEventListener("CUSTOMEVENT", function(){
elementsToUpdate[i].updateCounter()
});
但对我来说感觉有点难看。因此,可能有更好的解决方案来更新对象的动态实例。
提前致谢