简单理解Object.definepropertyhttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty这个是链接letobj={name:123}varvalue=''Object.defineProperty(obj,'name',{get:function(){return'get'+value},set:function(newVlaue){value=newVlaueconsole.log('set',value)}})obj.name='zs'console.log(obj)//这个分界线好看~~~~~~~~~~~因为数组不能被object.defineProperty监听,但是数组的原型是一个对象,所以可以监听数组原型上的push方法。下面是添加一个console.logvararrayPrototype=Object.create(Array.prototype)console.log(arrayPrototype)不改变数组原来的push方法)Object.defineProperty(arrayPrototype,'push',{value:function(){console.log('addconsole.logtopush')}})letarr=[1,2]arr.__proto__=arrayPrototypeconsole.log(arr)arr。推(3)
