猿问

js proxy 中的set 和 defineProperty问题

const obj = {
a : 1,
b: 1,
c: { e : 1}
}

var proxy = new Proxy(obj,{
get(target,property, receiver) {
return Reflect.get(target, property, receiver);
},
set(obj, prop, value) {
return obj[prop] = value;
},
defineProperty(target, property: string, descriptor) {
return Reflect.defineProperty(target, property, descriptor);
},
})

export function proxyTest(){
proxy.a = 2;
}
当去掉set方法时,会执行defineProperty;但是当有set方法时,不会执行definePropery;这是为什么呢?


ibeautiful
浏览 1251回答 1
1回答

ABOUTYOU

因为代码定义的get/set比defineProperty的优先级高。后者不能覆盖前者。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答