Comments on Meeting Notes

Brendan Eich brendan at
Tue Dec 4 16:03:43 PST 2012

Herby Vojčík wrote:
> I am convinced it is doable (to have __legacy__ names but move to use 
> the better way once it is present) with the example of 
> __defineGetter__ & Co.

I suggest those are bad precedents. They never were implemented in IE, 
which led to ES5's meta-object APIs.

> I confess I don't know how this is in the wild, just me being here 
> makes me a kind of early adopter with bias for using the new/right 
> way, but I feel those (__defineGetter__ and company) are of little use 
> now and the world successfully moved to Object.defineProperty / 
> {get,set} x() in literals.

The Object.defineProperty required ES5 and was also predicated on IE 
never adopteding dunder-define/lookup.

The object literal notation came from SpiderMonkey long ago, BTW -- it 
was not new and invented only in ES5.

> So why this wouldn't be possible for others?

Because of the above, at least. Note how __proto__ also never made it to 
IE but was more frequently used than __define/lookup, especially on the 
"mobile web" (post-iPhone, because WebKit reverse-engineered __proto__). 
One size does not fit all but we have particular precedents from which 
to reason, and the particulars do matter.

We cannot have __legacy__ in ES6 and hope to get rid of it "later" IMHO. 
We'll be committing to it as normative API for the indefinite future.


More information about the es-discuss mailing list