/** *使一个对象转化为可观察对象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 })