gale/proxy.js

32 lines
687 B
JavaScript
Raw Normal View History

2025-02-19 17:01:11 -05:00
const person = van.state({name:"seth", age:41});
console.log(Object.hasOwn(person, "rawVal"));
/** @type {<T>(obj:T, key:string)=>T} */
const Deep =(obj, key)=>
{
const proxInner =(context, key)=> new Proxy({}, {
get(_, prop)
{
const path = key+" . "+prop;
console.log(path, "accessed!");
const value = context[key];
return proxInner(value, path);
}
});
const proxOuter = new Proxy({}, {
get(_, prop)
{
return proxInner(obj, prop);
},
set(_, prop, val)
{
obj[prop] = val;
}
});
return proxOuter;
}
export default Deep;