如何在javascript中将一个eventListener添加到一个Object中,当对象被操作时会触发它?

时间:2010-10-11 02:43:08

标签: javascript events javascript-events event-handling

我有一个动态操作的复杂UI结构,并说我有一个ui_state对象,我保留用户的最新UI状态,例如哪个选项卡可见,该选项卡内的内容等。

例如:

var ui_states = {
  tabs : [
    {
      name     : "some tab",
      active   : true,
      children : { ... }
    },
    {
      name     : "some other tab",
      children : { ... }
    }
  ]
}

我将此保留在html5 localStorage上,当用户刷新网站时,它会重新打开相同的页面。每次UI更改时,此对象都会相应更改。在改变它之后我需要运行让我们说updateLocalStorage()这是完美的。

我的问题是针对此流程,我是否可以为ui_states对象创建一个自定义事件,例如ui_states.addEventListener('onchange', function(){ // do stuff }),以便每次操作对象时都不运行updateLocalStorage()函数?

感谢。

1 个答案:

答案 0 :(得分:3)

您正在将JavaScript编程与DOM编程混合在一起。事件纯粹是一个DOM概念。 JS对象不支持事件处理程序。

唯一的方法是创建getter和setter。有一些方法可以使用special properties执行此操作,但不幸的是,浏览器支持可能有点。另一种方法是使用显式方法和私有变量。 This is possible but a little complex.