你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

defineProperty和proxy的区别

2021/12/23 20:59:47

Object.defineProperty 监听不到数组下标和长度的变化。而且监测不到对象的属性添加或删除

Vue3 使用 Proxy 来监控数据的变化。Proxy 是 ES6 中提供的功能。相对于Object.defineProperty()来说,Proxy 可以监听数组的变化。而且Proxy 直接代理整个对象而非对象属性,这样只需做一层代理就可以监听同级结构下的所有属性变化,包括新增属性和删除属性。
 

let obj = {name: 'Eason',age: 30}

let handler = {

  get (target, key, receiver) {

    console.log('get', key)

    return Reflect.get(target, key, receiver)

  },

  set (target, key, value, receiver) {

    console.log('set', key, value)

    return Reflect.set(target, key, value, receiver)

  }

}

let proxy = new Proxy(obj, handler)

proxy.name = 'Zoe' // set name Zoe

proxy.age = 18 // set age 18