By Zevan | October 28, 2018
This uses a proxy to make sure all keys/props of an object are always defined.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| let spec = {
get: (o, key) => {
return o[key] != null ? o[key] : o[key] = O();
},
set: (o, key, v) => {
o[key] = v;
}
};
let O = () => {
return new 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); |
Outputs:
Proxy {creation: "is interesting", stuff: Proxy}
is interesting
Proxy {not: Proxy}
Proxy {clear: Proxy}
Proxy {what: Proxy}
Proxy {this: Proxy}
Proxy {could: Proxy}
Proxy {be: Proxy}
Proxy {used: Proxy}
Proxy {for: 123}
123
By Zevan | August 28, 2018
I have a set of ~100 pictograms that I use for personal notation. When I was actively working on Zeta. I created a few of these with equations:
You can read more about Zeta in this post.
I spam my facebook with images from my sketchbooks if you’re at all interested in seeing more pictograms:
By Zevan | August 26, 2018
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:
http://actionsnippet.com/?p=426