为了账号安全,请及时绑定邮箱和手机立即绑定

如何监听 js 中变量的变化?

如何监听 js 中变量的变化?

我现在有这样一个需求,需要监控js的某个变量的改变,如果该变量发生变化,则触发一些事件,不能使用timeinterval之类的定时去监控的方法,不知道有比较好的解决方案么?比如我定义了如下全局变量:var a= { zhihu:0 };需要做的是当config.jiankong值被其他js文件中的某些函数改变时,需要触发指定的事件!
查看完整描述

6 回答

?
慕田峪是谁我也不认识

TA贡献15条经验 获得超6个赞

别用变量就好了~弄个函数,里面声明一个变量,或者用一个全局变量,需要修改的时候得调用这个函数,这样你就能知道了

查看完整回答
2 反对 回复 2018-02-08
?
英明神武的牛

TA贡献5条经验 获得超2个赞

数组的话可以通过重定义JS系统函数来实现了,通过 Array.prototype.add = func(){  this.push() }  之类的方法  在fun中增加一个自定义的回调事件

查看完整回答
2 反对 回复 2018-02-01
?
林逸舟丶

TA贡献124条经验 获得超28个赞

不知道你接触过Vue.js没有,想来应该是没接触过。

es6新增了一些底层方法,支持观察到变量的变化,你可以百度一下

查看完整回答
2 反对 回复 2018-02-01
?
不要慕码人我要切诺基

TA贡献9条经验 获得超9个赞

1.使用 defineProperty 或 __define_setter__ 给写属性添加回调函数。对浏览器兼容性有要求

2.使用现成的库,比如 watch.js。不过在老版本浏览器下 watch.js 使用了定时器监控,此时回调是异步的,而在新版浏览器中回调是同步的,时序不一致

3.使用 MVVM 框架 avalon,此框架使用 vb script 实现了老版本 IE 的兼容,没有使用定时器,不过针对你的简单需求,略有点庞大

4.数组成员不能靠以上方法监听,目前我所知的只能间接监听一部分数组函数,实现方法就是函数替换,替换目标是那些会改变 this 数组的“非纯函数”,比如splice

查看完整回答
1 反对 回复 2018-02-09
?
拖鞋_

TA贡献453条经验 获得超223个赞

ES6好像有

查看完整回答
1 反对 回复 2018-02-01
?
远看寒山石径斜

TA贡献12条经验 获得超4个赞

用KnockoutJS可以较容易实现。Knockout的observable可以实现数据的双向绑定,用被监控的变量名.subscribe(function(){//变量改变后调用该函数})可以实现某个变量变化就调用这个function

查看完整回答
反对 回复 2018-02-09
  • 6 回答
  • 0 关注
  • 6867 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信