I am trying to intercept get and set operations using proxies. Setting works perfectly, but getting triggers "RangeError: Maximum call stack size exceeded" in an infinite loop. I am trying to simply log during the interception and return the default behavior.
Working:
testobject = {}
testobject = new Proxy(testobject, {
set(target, property, value, receiver) {
console.log("setting", target, property, value, receiver)
return(Reflect.set(target, property, value, receiver))
}
})
testobject.done = true
console.log(testobject.done)
Broken:
testobject = {}
testobject = new Proxy(testobject, {
get(target, property, receiver) {
console.log("getting", target, property, receiver)
return(Reflect.get(target, property, receiver))
},
set(target, property, value, receiver) {
console.log("setting", target, property, value, receiver)
return(Reflect.set(target, property, value, receiver))
}
})
testobject.done = true
console.log(testobject.done)
I fixed this by removing the receiver paramters.
testobject = {}
testobject = new Proxy(testobject, {
get(target, property) {
console.log("getting", target, property)
return(Reflect.get(target, property))
},
set(target, property, value) {
console.log("setting", target, property, value)
return(Reflect.set(target, property, value))
}
})
testobject.done = true
console.log(testobject.done)