32 lines
687 B
JavaScript
32 lines
687 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)
|
||
|
{
|
||
|
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;
|