David Bruant wrote:
ooooooohh.... Yes it does. I hadn't thought of WeakMaps for the private syntax.
Sounds good then.

Another point Mark and Tom made that I found helpful:

The traditional GC-costly WeakMap implementation, which handles cases where the map and its keys' lifetimes are not related in any particular way, to perform cycle collection treating each key/value entry as an Ephemeron, is not required for private-in-class. So long as the class lives, its private names must work. Instances keep their class alive; new instances may be created even if old ones were all GC'ed. Symbols are no more leaky that WeakMaps in this setting.

This means that private-in-class names can be per-class as Mark showed, but more: the private values may be stored in fields of each instance. No WeakMap at full GC cost is required. Whether the implementation uses Symbols or GC-optimized WeakMaps is not observable.

As the strawman notes, these private variables's names and values cannot be discovered by reflection.

Given all this, I saw light at the end of the tunnel, and sketched accordingly in my JQueryUK talk. I tagged the slide's title with "(ES6?)" -- note the "?" where elsewhere I used "(ES6)" or "(ES7)" -- and made sure not to promise, though.

/be


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to