Things and stufffffff

This commit is contained in:
Kim Ravn Hansen
2025-09-14 20:44:42 +02:00
parent aeb9d776fc
commit 71b4329b9e
5 changed files with 292 additions and 0 deletions

33
bottomless.md Executable file
View File

@@ -0,0 +1,33 @@
Got it — youd like the chain of accessed properties to “remember” its path, so you can do things like:
```js
console.log(foo.bar.baz.toString()); // "bar.baz"
```
You can extend the Proxy trick for that:
```js
function Bottomless(path = []) {
return new Proxy(() => {}, {
get(_, prop) {
if (prop === "toString" || prop === "valueOf") {
return () => path.join(".");
}
return Bottomless([...path, prop]);
},
});
}
const foo = Bottomless();
console.log(foo.bar.baz.toString()); // "bar.baz"
console.log(foo.hello.world.toString()); // "hello.world"
```
⚡ Notes:
- `toString` (and `valueOf`) are trapped so you can stringify naturally.
- The chain isnt “real” objects anymore, but function proxies that track their path.
- You could also add a `.path` property if you prefer structured access.
Want me to make it so it **still supports assignment** (`foo.bar = 123`) _and_ path stringifying?