微信小程序數據劫持代理的實現
更新時間:2022年01月20日 08:38:12 作者:柿子鐳
本文主要介紹了微信小程序?數據劫持代理的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
index.html
index.js
// Vue數據劫持代理 //模擬Vue中data選項 let data = { username:'小鐳', age:3 } // 模擬組件的實例 let _this={} // 利用object.defineProperty() for(let item in data){ console.log(item,data[item]); Object.defineProperty(_this,item,{ // get作用:用來獲取擴展屬性值,當獲取該屬性時調用get方法 get(){ console.log('get()'); return data[item] } }) } console.log(_this)
當要獲取訪問age或username的值時,才會調用get()方法,打印get()
若要修改data中的username的 值,可以直接通過_this.username修改嗎?
答案是:不可以
(沒有修改成功,username還是“小鐳")
可以通過set方法修改值
for(let item in data){ console.log(item,data[item]); Object.defineProperty(_this,item,{ // get作用:用來獲取擴展屬性值,當獲取該屬性時調用get方法 get(){ console.log('get()'); return data[item] }, //set作用:監(jiān)視擴展屬性的,只要已修改就調用 set(newValue){ console.log('set()',newValue); // _this.username=newValue; 千萬不要在set方法中修改當前擴展屬性的值,會出現死循環(huán) data[item] = newValue; } }) }
(修改成功?。?nbsp;
到此這篇關于微信小程序數據劫持代理的實現的文章就介紹到這了,更多相關小程序數據劫持代理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript中各種編碼解碼函數的區(qū)別和注意事項
JavaScript 中encodeURI,encodeURIComponent與escape的區(qū)別和注2010-08-08