strawman for the := operator

Herby Vojčík herby at
Wed Aug 8 08:12:47 PDT 2012


1. It has lot of typos (I remember two uses of := in examples in the 
first half where in fact legacy = should have been plus there are a few 
others, it would benefit from proofreading with someone with editing 

2. As was already mentioned, the super rebinding allows me to just

   iWantSuperHere := (class { m(...) {super....} }).prototype;

to get to generic super, but spec's lack of genericity must be worked 
around this way (or similar). Which is probably different discussion 
(and with this := around but with super still restricted to classes it 
would look strange or maybe even ridiculous).


Allen Wirfs-Brock wrote:
> Based upon discussions last week in the "July 25, 2012 - TC39 Meeting
> Notes" thread, I've created a new strawman proposal for a := operator.
> See
> := is a convient way to copy properties from one object to another or to
> extend an object with new properties. It combines supports for many of
> the same use cases as the previously proposed "object extension
> literals" and the JSFixed Object.extend proposal.
> The most important characteristic of := is that it uses
> [[DefineOwnProperty]] semantics rather than [[Put]] semantics to define
> properties on its target object so it doesn't run into issues with
> assignment to accessor properties or over-riding inherited readonly
> properties. It is also smart about dealing with methods that reference
> super.
> Some basic examples:
> target := src; //define all own properties of src onto target
> //add a method and an accessor to an existing prototype
> Point.prototype := {
> plus(aPoint) {return new this.comstructor(this.x+aPoint.x,this.y+aPoint.y},
> get rho() {return Math.sqrt(this.x*this.x+this.y*this.y}
> };
> Have at it,
> Allen
> ------------------------------------------------------------------------
> _______________________________________________
> es-discuss mailing list
> es-discuss at

More information about the es-discuss mailing list