在javascript中调用自定义事件的函数

时间:2016-06-27 22:32:28

标签: javascript object

我想将一个事件处理程序绑定到我的(动态)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()
});

但对我来说感觉有点难看。因此,可能有更好的解决方案来更新对象的动态实例。

提前致谢

0 个答案:

没有答案