SOURCE

function observe(obj) {
  if (!obj || typeof obj !== 'object') {
    return
  }
  Object.keys(obj).forEach(key => {
    defineReactive(obj, key, obj[key])
  })
}
function defineReactive(obj, key, val) {
    observe(val)
    Object.defineProperty(obj,key, {
        enumerable: true,
        configurable: true,
        get: function reactiveGetter() {
            console.log('get value')
            return val
        },
        set: function reactiveSetter(newVal) {
            console.log('change value')
            val = newVal
        }
    })
}
var data = { name: 'yck' }
observe(data)
// let name = data.name // -> get value
data.name // -> change value
console 命令行工具 X clear

                    
>
console