一、Vue是如何實作雙向系結的?
利? Object.defineProperty 劫持物件的訪問器,在屬性值發?變化時我們可以獲取變化,然后根據變化進?后續回應(在 vue3.0中通過Proxy代理物件進?類似的操作),
// 這是將要被劫持的物件
const data = { name: '', };
function say(name) {
if (name === ' 古 天 樂 ') { console.log('給?家推薦?款超好玩的游戲 '); }
else if (name === '渣渣輝') { console.log('戲我演過很多,可游戲我只玩貪玩懶?'); }
else { console.log('來做我的兄弟'); } }
// 遍歷物件,對其屬性值進?劫持
Object.keys(data).forEach(function(key) {
Object.defineProperty(data, key, {
enumerable: true,
configurable: true,
get: function() { console.log('get'); },
set: function(newVal) {
// 當屬性值發?變化時我們可以進?額外操作
console.log(` ? 家 好 , 我 系 ${newVal}`);
say(newVal); },
});
});
data.name = '渣渣輝';
//?家好,我系渣渣輝
//戲我演過很多,可游戲我只玩貪玩懶?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230636.html
標籤:其他
上一篇:【每日一題】另類加法
下一篇:A - 卡牌游戲 III
