长风破浪会有时
直挂云帆济沧海

js中Object.defineProperty跟Proxy的区别

Object.defineProperty(obj,prop,descriptor);

//obj 要在其上定义属性的对象.

//prop 要定义或修改的属性的名称。

//descriptor 将被定义或修改的属性描述符。

不能监听数组的变化,必须遍历对象的每个属性,碧玺深层遍历嵌套的对象。

而Proxy不同

new Proxy(target,handler);

//target 用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)

//handler 一个对象,其属性是当执行一个操作时定义代理的行为的函数。

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
赞(2)
未经允许不得转载:阿锋哥前端开发经验分享 » js中Object.defineProperty跟Proxy的区别
分享到: 更多 (0)

几百块就能做营销型企业网站?

查看详情