let ironman = { hobbies: ['1', '23', '56'], hy: '' } // Object.defineProperty(ironman.hobbies, 'push', { // value () { // console.log(`Push ${arguments[0]} to ${this}`) // this[this.length] = arguments[0] // } // }) // Object.defineProperty(ironman, 'hy', { // set (val) { // console.log(val); // } // }) // ironman.hobbies[1] = 123; // ironman.hobbies.push('wine') // ironman['hy']='1111111' // console.log(ironman) // var arr = [1,2,3,4] // arr.forEach((item,index)=>{ // Object.defineProperty(arr,index,{ // set:function(val){ // console.log('set') // item = val // }, // get:function(val){ // console.log('get') // return item // } // }) // }) // arr[1]; // get 2 // arr[1] = 1; // set 1 // console.log(arr[1]); // è¿æ¯å°è¦è¢«å«æç对象 const data = { name: 'hahaha', idea: {a: 'hahaha'} }; function say(name) { if (name === 'å¤å¤©ä¹') { console.log('ç»å¤§å®¶æ¨è䏿¬¾è¶ 好ç©ç游æ'); } else if (name === '渣渣è¾') { console.log('æææ¼è¿å¾å¤,坿¸¸ææåªç©è´ªç©ææ'); } else { console.log('æ¥åæçå å¼'); } } walk(); function walk() { Object.keys(data).forEach(key => convert(key, data[key])); } // éå对象,å¯¹å ¶å±æ§å¼è¿è¡å«æ function convert(key, val) { Object.defineProperty(data, key, { enumerable: true, configurable: true, get: function() { console.log('get'); return val; }, set: function(newVal) { // å½å±æ§å¼åçååæ¶æä»¬å¯ä»¥è¿è¡é¢å¤æä½ console.log(`大家好,æç³»${newVal}`); say(newVal); val = newVal; console.log(val); } }); } // data.name = '渣渣è¾'; data.idea = {a: '222'}; console.log(data.idea);