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.
This works great as a general principle, but honestly tons of languages have already forged this path. It's pretty straightforward, I think.
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