SOURCE

console 命令行工具 X clear

                    
>
console
const data = {
    name: 'CalDey'
}

document.write(data.name)

observer(data);

function observer(target) {
    if (typeof target !== 'object' || target == null) {
        return target;
    }

    for (let key in target) {
        defineReactive(target, key, target[key])
    }

    function defineReactive(target, key, value) {
        Object.defineProperty(target, key, {
            get() {
                return value;
            },
            set(newVal) {
                if (newVal !== value) {
                    value = newVal;
                    alert('更新视图')
                }
            }
        })
    }
}

oBtn = document.getElementsByTagName('button')[0];
oBtn.addEventListener('click', function() {
    data.name = 'Thomas'
    document.write(data.name)
})
<h1>实现简易Vue响应式</h1>
<button>更改数据</button>