我现在有这样一个需求,需要监控js的某个变量的改变,如果该变量发生变化,则触发一些事件,不能使用timeinterval之类的定时去监控的方法,不知道有比较好的解决方案么?比如我定义了如下全局变量:var a= { zhihu:0 };需要做的是当config.jiankong值被其他js文件中的某些函数改变时,需要触发指定的事件!
6 回答
英明神武的牛
TA贡献5条经验 获得超2个赞
数组的话可以通过重定义JS系统函数来实现了,通过 Array.prototype.add = func(){ this.push() } 之类的方法 在fun中增加一个自定义的回调事件
不要慕码人我要切诺基
TA贡献9条经验 获得超9个赞
1.使用 defineProperty 或 __define_setter__ 给写属性添加回调函数。对浏览器兼容性有要求
2.使用现成的库,比如 watch.js。不过在老版本浏览器下 watch.js 使用了定时器监控,此时回调是异步的,而在新版浏览器中回调是同步的,时序不一致
3.使用 MVVM 框架 avalon,此框架使用 vb script 实现了老版本 IE 的兼容,没有使用定时器,不过针对你的简单需求,略有点庞大
4.数组成员不能靠以上方法监听,目前我所知的只能间接监听一部分数组函数,实现方法就是函数替换,替换目标是那些会改变 this 数组的“非纯函数”,比如splice
远看寒山石径斜
TA贡献12条经验 获得超4个赞
用KnockoutJS可以较容易实现。Knockout的observable可以实现数据的双向绑定,用被监控的变量名.subscribe(function(){//变量改变后调用该函数})可以实现某个变量变化就调用这个function
添加回答
举报
0/150
提交
取消