SOURCE

/**
*使一个对象转化为可观察对象postMessage
*@param {Object} obj对象
*@param {String} key对象的key
*@param {Any} val对象的某个key的值
**/
function defineReactive (obj,key,val){
  Object.defineProperty(obj,key,{
    get(){
      console.log(`${key}read`)
      return val
    },
    set(newVal){
      console.log(`${key}set`)
      val = newVal
    }
  })
}
// 把一个对象的每一项都转化为可观测对象
function observale(obj){
  const keys = Object.keys(obj)
  keys.forEach((key)=>{
    defineReactive(obj,key,obj[key])
  })
  return obj
}
const hero = observale({
  health:3000,
  iq:150
})
console 命令行工具 X clear

                    
>
console