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