为什么Proxy API替代defineProperty
Object.defineProperty
定义:Object.defineProperty()方法会直接在一个对象上定义一个新的属性,或者修改一个对象的现有属性,并返回此对象
为什么能实现响应式
通过defineProperty两个属性:get和set
- get 属性的getter函数,当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。该函数的返回值会被用作属性的值
- set 属性的setter函数,当属性值被修改时,会调用此函数。该方法接受一个参数(也就是被赋予的新值),会传入赋值时的this对象。默认为undefined,下面通过代码展示定义一个响应式函数defineReactive