Native Proxy Syntax

Alex Kodat alexkodat at gmail.com
Wed Aug 23 15:55:30 UTC 2017


It would seem that a more general solution would be to allow let inside a
class definition and have the constructor close over the variables declared
in the class:

class MyClass {
    let get = (target, name) => {
        if (name in target) return target[name];
        // ... do something to determine property
    }
    constructor() {
        return new Proxy(this, {get});
    }
}
``` 

While this does require an extra return statement it's reasonably tidy and
has the huge benefit of providing private variables in a class (as local
variables in a closure). But I have to believe that this has been discussed
ad nauseum and there's probably a very good reason let (or some equivalent)
was not part of class.

-----Original Message-----
From: es-discuss [mailto:es-discuss-bounces at mozilla.org] On Behalf Of Vihan
Bhargava
Sent: Wednesday, August 23, 2017 10:08 AM
To: es-discuss at mozilla.org
Subject: Native Proxy Syntax

The `Proxy` class is great for classes however at the moment, the current
syntax can be unwieldy:

```
class MyClass {
   constructor() {
       return new Proxy(this, {
           get: function(target, name) {
               if (name in target) return target[name];
               // ... do something to determine property
           }
       });
   }
}
```

My proposal is to introduce a more idiomatic syntax for proxies in classes:

```
class MyClass {
   constructor () { ... }
   get *(name) {
       // ... do something to determine property
   }
}
```

This already is much more clear than the above.
_______________________________________________
es-discuss mailing list
es-discuss at mozilla.org
https://mail.mozilla.org/listinfo/es-discuss



More information about the es-discuss mailing list