Merge branch 'deep-proxy' of https://gitea.hptrow.me/SethTrowbridge/gale into deep-proxy
This commit is contained in:
commit
62c8351b24
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"deno.cacheOnSave": true,
|
||||||
|
"deno.codeLens.test": true
|
||||||
|
}
|
16
proxy.js
16
proxy.js
@ -4,14 +4,22 @@
|
|||||||
/** @type {<T>(obj:T, key:string)=>T} */
|
/** @type {<T>(obj:T, key:string)=>T} */
|
||||||
const Deep =(obj, key)=>
|
const Deep =(obj, key)=>
|
||||||
{
|
{
|
||||||
|
|
||||||
const proxInner =(context, key)=> new Proxy({}, {
|
const proxInner =(context, key)=> new Proxy({}, {
|
||||||
get(_, prop)
|
get(_, prop)
|
||||||
{
|
{
|
||||||
const path = key+" . "+prop;
|
if(typeof prop === "string")
|
||||||
console.log(path, "accessed!");
|
{
|
||||||
const value = context[key];
|
const path = key+" . "+prop;
|
||||||
|
console.log(path, "accessed!");
|
||||||
|
const value = context[prop];
|
||||||
|
|
||||||
return proxInner(value, path);
|
return proxInner(value, path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return context[prop]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import Deep from "./proxy.js";
|
|||||||
Deno.test("proxy", ()=>{
|
Deno.test("proxy", ()=>{
|
||||||
|
|
||||||
const d1 = Deep({name:"seth", age:41, tags:[]}, "p1");
|
const d1 = Deep({name:"seth", age:41, tags:[]}, "p1");
|
||||||
const dig = d1.name.other;
|
const dig = d1.name;
|
||||||
const dig2 = dig.so.deep;
|
//const dig2 = dig.so.deep;
|
||||||
|
|
||||||
});
|
});
|
Loading…
Reference in New Issue
Block a user