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.
/be _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

