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

Kak*_*Web 8 javascript events event-handling javascript-events

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

例如:

var ui_states = {
  tabs : [
    {
      name     : "some tab",
      active   : true,
      children : { ... }
    },
    {
      name     : "some other tab",
      children : { ... }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我保持这个html5 localStorage,当用户刷新网站时,它重新打开页面.每次UI更改时,此对象都会相应更改.在改变它之后我需要运行让我们说updateLocalStorage()哪个工作完美.

我的问题是这个流程,我可以为我的ui_states对象创建一个自定义事件,就像每次操作对象时ui_states.addEventListener('onchange', function(){ // do stuff })不运行该updateLocalStorage()函数一样吗?

谢谢.

sta*_*san 3

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

唯一的方法是创建 getter 和 setter。有一些方法可以使用特殊属性来做到这一点,但不幸的是,浏览器支持有点可能。另一种方法是使用显式方法和私有变量。这是可能的,但有点复杂。

  • 我不同意。事件绝对不仅仅是 DOM。但是松散耦合组件的概念也可以在“Dom-Less”-JS 中实现。 (3认同)
  • 好吧,当我发布这个答案时,事件确实只发生在 DOM 对象上。显然,从那时起事情就取得了进展。 (2认同)