I don’t think I ever mentioned https://snippet.zone here. It’s just another actionsnippet-like site I created a few years ago… I don’t update it all that frequently but it has many snippets mostly written in js.
recent fork of a snippet.zone that I used in a short…
Here’s a short showing something I did for genuary 2022…
let spec ={
get:(o, key)=>{return o[key]!=null? o[key]: o[key]= O();},
set:(o, key, v)=>{
o[key]= v;}};
let O =()=>{returnnew Proxy({}, spec);};
let dynamic = O();
dynamic.prop.creation='is interesting';
dynamic.prop.stuff.not.clear.what.this.could.be.used.for=123;// log out full structure
let f =(o)=>{for(let i in o){
console.log(o[i]);if(typeof o[i]==='object') f(o[i]);}};
f(dynamic);
Creating a dictionary type object with ES6 Symbols is easy. Yes we have Maps and WeakMaps but this is still interesting for a variety of reasons… Being able to use objects as keys in another object (dictionary) has many great uses…. So how do you use Symbols like this?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let a ={ id: Symbol('key')},
b ={ id: Symbol('key')};
let dictionary ={[a.id]:'value by obj a',[b.id]:'value by obj b'};
console.log(dictionary[a.id]);
console.log(dictionary[b.id]);// outputs:// 'value by obj a'// 'value by obj b'
By using either object a or object b’s `id` symbol, our dictionary points to another value. This old AS3 snippet is similar: