Tab Atkins Jr. (2014-09-23T22:30:00.000Z)
On Tue, Sep 23, 2014 at 2:34 PM, Brendan Eich <brendan at mozilla.org> wrote:
> Hi Nicholas, sorry for the tardy reply. I did propose NoSuchProperty to Ecma
> TC39 today. To recap:
>
> // Library code starts here.
>
> const NoSuchProperty = Proxy(Object.prototype, {
>   // uncomment for nasty Firefox bug workaround:
>   // has: function(target, name) { return true; },
>   get: function(target, name, receiver) {
>     if (name in Object.prototype) {
>       return Reflect.get(Object.prototype, name, receiver);
>     }
>     throw new TypeError(name + " is not a defined property");
>   }
> });
>
> function NoSuchPropertyClass() {}
> NoSuchPropertyClass.prototype = NoSuchProperty;
>
> // End library code.
> // Your client code starts here.
>
> class MySaferClass extends NoSuchPropertyClass {
>   ...
> }
>
> The library code is self-hosted based on ES6 Proxies and Reflect.
>
> The committee reaction was to let this be put in popular libraries, in forms
> to be polished based on actual developer experience, and then we can
> standardize once there is a clear winner and strong adoption.
>
> Hope this is survivable. I argued we should shortcut to reduce the burden on
> the ecosystem but (as I've argued many times) TC39 believes we are least
> capable compared to the wider ecosystem (github, etc.) in designing,
> user-testing, polishing, and finalizing APIs. We can do final polish and
> formal specification, for sure. Y'all should do the hard part, not because
> we are lazy but because you are many, closer to your problem domains and
> use-cases, and collectively wiser about the details.

This works great as a general principle, but honestly tons of
languages have already forged this path.  It's pretty straightforward,
I think.

~TJ
domenic at domenicdenicola.com (2014-09-30T16:49:08.007Z)
This works great as a general principle, but honestly tons of
languages have already forged this path.  It's pretty straightforward,
I think.