我有一个动态操作的复杂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()
函数?
感谢。
答案 0 :(得分:3)
您正在将JavaScript编程与DOM编程混合在一起。事件纯粹是一个DOM概念。 JS对象不支持事件处理程序。
唯一的方法是创建getter和setter。有一些方法可以使用special properties执行此操作,但不幸的是,浏览器支持可能有点。另一种方法是使用显式方法和私有变量。 This is possible but a little complex.