Le 29/12/2011 18:13, Allen Wirfs-Brock a écrit :
> On Dec 29, 2011, at 4:58 AM, David Bruant wrote:
>
>> Le 29/12/2011 03:04, Mark S. Miller a écrit :
>>> Darn. I completely missed that. No easy fix comes to mind. Suggestions?
>> I think '__proto__' in object literals should work like any property. The
>> ES.next proto operator [1] creates a standard alternative to using __proto__
>> in object literal.
>> ...
>> __proto__ would then act like a regular property (shadowing the one on the
>> Object.prototype, very much like if it had been added with
>> Object.defineProperty). The ability to later change the prototype is not
>> lost as Lasse suggested.
>>
>> I don't know to what extent my suggestion would break exisiting scripts.
>> Neither do I know whether breaking existing __proto__-using scripts is a
>> good or a bad thing.
>> If in some browsers it breaks something, browsers, when changing __proto__
>> semantics could issue a warning in their console ("you're using __proto__ in
>> object literals and we have changed its semantics...").
> The only reason to even consider a normative definition for __proto__ is
> because it already exists on the web. If that definition doesn't support its
> common usage patterns than there isn't much point in doing it.
>
> We really should be starting from an analysis of the actual intersection
> semantics of __proto__ among the major web browsers. Mark's test in his
> original post is just a start at that analysis.
>
> Personally, given that IE as yet to support it, I think there is a good
> argument that the intersection semantics is empty and at the very least
> __proto__ in object literals it should be banned in ES.next Harmony mode.
I'm not sure I understand. I suggest to ban '__proto__' for object
literals, you seem to disagree based on the fact that __proto__ should
be standardized based on the intersection of current implementation
semantics, then you suggest to ban __proto__ in object literals. Am I
misinterpreting what you answered?
Also, you mention "in ES.next Harmony mode". What is the plan regarding
__proto__? To standardize it also for ES5? What is the scope of the next
version of the standard? Does it standardize ES5, ES5+strict mode and
ES6 (or whatever number)? Will the standardization of __proto__ also be
part of an ES5.2?
If the idea is only to standardize __proto__ and its interaction with
ES6 and __proto__ was not considered as a regular property, then, what
would be the semantics of:
-----
var o = myProto1 < {
__proto__: myProto2,
a: 1,
};
-----
David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss