40 lines
864 B
JavaScript
40 lines
864 B
JavaScript
//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)
|
|
{
|
|
if(typeof prop === "string")
|
|
{
|
|
const path = key+" . "+prop;
|
|
console.log(path, "accessed!");
|
|
const value = context[prop];
|
|
|
|
return proxInner(value, path);
|
|
}
|
|
else
|
|
{
|
|
return context[prop]
|
|
}
|
|
}
|
|
});
|
|
|
|
const proxOuter = new Proxy({}, {
|
|
get(_, prop)
|
|
{
|
|
return proxInner(obj, prop);
|
|
},
|
|
set(_, prop, val)
|
|
{
|
|
obj[prop] = val;
|
|
}
|
|
});
|
|
|
|
return proxOuter;
|
|
}
|
|
|
|
export default Deep; |