linux零基礎學習視頻
2018-01-31 18:31:49
我現在有這樣一個需求,需要監控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
提交
取消