Trying to understand the internals of Proxy and Reflect built-in objects, I've reached - IMO - an interesting "how does this even work" point:
Let's say I want to wrap into a Proxy this object and detect when we're accessing a callable property:
const obj = {
v: 42,
foo(n) { return this.v + n }
}
const pObj = new Proxy(obj, {
get(target, prop, r) {
if (typeof target[prop] === 'function') {
console.log('accessing a function, arguments: ', { ...arguments })
}
return Reflect.get(...arguments);
}
})
This code just works:
pObj.foo(1000) // « 1042
Printing this trace:
Which reads: arguments has
- target (
[0]): the object - prop (
[1]):"foo" - receiver (
[2]): the proxy object itself.
My question is, where is defined the function argument (1000) that is applied to foo(n)? isn't defined in arguments? is it possible to validate this argument before calling Reflect.get(...arguments)?

Aucun commentaire:
Enregistrer un commentaire