joe at trusktr.io (2019-04-22T18:23:29.889Z)
> 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 at trusktr.io (2019-04-22T18:23:06.066Z)
> 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!");
}
}
}
```
> 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190422/34d28c4d/attachment.html>