Video: https://www.youtube.com/watch?v=NtErU3Jbt78
Mamy już 2016 rok. Dlaczego ciągle korzystamy z tablic, skoro mamy sprecyzowane kontenery na dane. Chciałbym opowiedzieć Ci moją historię z kontenerami na dane, które dostępne są w specyfikacji języka ECMAScript 2015, czyli od ponad roku.
3. Who am I?
Piotr Kowalski
Kierownik Działu Aplikacji Webowych
Cyfrowy Polsat, Warsaw
JavaScript Ninja. Mac lover. Open source fan. Blogger.
Organizer WarsawJS. Author of several libs in @npm
"Kto chce szuka sposobu, kto nie chce szuka powodu."
Trainer
4. Can you explain what happens here!?
My interview question.
let MAP = {}
let foo = { name: 'foo' }
let bar = { name: 'bar' }
MAP[foo] = "Hello"
MAP[bar] = "World"
console.log(MAP[foo]) // ???
1
2
3
4
5
6
7
8
46. WeakMap
The WeakMap object is a collection of key/value pairs in which the keys
are weakly referenced. The keys must be objects and the values can be
arbitrary values. MDN @ 2016
54. More examples of using WeakMap
• StackOverflow: Link DOM element with any attributes
• Book ExploringJS: Cache:
http://exploringjs.com/es6/ch_maps-sets.html#_caching-computed-results-via-
weakmaps
• Book ExploringJS: Observer pattern:
http://exploringjs.com/es6/ch_maps-sets.html#_managing-listeners
• Book ExploringJS: Keep private data:
http://exploringjs.com/es6/ch_maps-sets.html#_keeping-private-data-via-weakmaps
65. Similarities
• Map & Set can use primitives and objects as keys
• Set & WeakSet has unique keys
• WeakMap & WeakSet can use ONLY objects as keys
• WeakMap & WeakSet don't have size & forEach
property
• WeakMap & WeakSet held items weakly, so GC will
remove its when are unused