亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何監聽 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 關注
  • 7171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號