Actual WeakSet Use Cases

Andrea Giammarchi andrea.giammarchi at gmail.com
Tue Apr 23 09:26:27 UTC 2019


WeakSet can be very useful in general to avoid *any* object to be
visited/setup twice, not just those coming from user-land classes.

Circular references, mixins, DOM nodes one-off events handling, and so on
and so fort.

On Mon, Apr 22, 2019 at 8:26 PM #!/JoePea <joe at trusktr.io> wrote:

> (I edited the broken format of my previous post)
>
> What other use cases are there?
>
> On Mon, Apr 22, 2019 at 11:20 AM #!/JoePea <joe at trusktr.io> wrote:
>
>> > WeakSets are perfect for branding and are how I would expect web
>> platform class branding to be explained.
>> >
>> > ```js
>> > const foos = new WeakSet();
>> >
>> > class Foo {
>> >   constructor() {
>> >     foos.add(this);
>> >   }
>> >
>> >   method() {
>> >     if (!foos.has(this)) {
>> >       throw new TypeError("Foo.prototype.method called on an
>> incompatible object!");
>> >     }
>> >   }
>> > }
>> > ```
>>
>> Just curious, is that effectively the same as what the (current) [private
>> fields proposal](https://github.com/tc39/proposal-class-fields) offers?
>>
>> ```js
>> class Foo {
>>   #isFoo = true
>>
>>   method() {
>>     if (this.#isFoo) {
>>       throw new TypeError("Foo.prototype.method called on an incompatible
>> object!");
>>     }
>>   }
>> }
>> ```
>>
>> - Joe
>>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190423/6164d2e6/attachment-0001.html>


More information about the es-discuss mailing list