编辑代码

let cbQueue = new Set()

let observer = (callback) => cbQueue.add(callback)

let observable = data => new Proxy(data, {
    set: (obj, prop, newVal, receiver) => {
        let oldValue = obj[prop]
        let result = Reflect.set(data, prop, newVal, receiver)
        if (result) {
            cbQueue.forEach(cb => cb(prop, oldValue, newVal))
        }
        return result
    }
})
observer((prop, oldValue, newValue) => {
    console.log(`obj的${prop}${oldValue}变成了${newValue}`)
})
let obj = observable({ name: 'nowell', age: 27 })

obj.age = 26
obj.name = 'yangjie'