vue2双向绑定原理

59 阅读1分钟
function vue2vmodel(data, key, outvalue) {
    Object.defineProperty(data, key, {
        get() {
            console.log('依赖收集')
            return outvalue
        },
        set(newValue) {
            if(newValue === outvalue) return;
            console.log('此处通知变化,执行更新操作')
            outvalue = newValue;
        }
    })
}
const data = {
    name: 'xxx',
    age:'xxx'
}
let keys = Object.keys(data);
for(let i = 0; i< keys.length; i++) {
    let key = keys[i];
    let value = data[key];
    // 每一项都调用vue2vmodel
    vue2vmodel(data,key, value)
}