On May 13, 2013, at 2:16 PM, Erik Arvidsson wrote:

> On Mon, May 13, 2013 at 5:01 PM, Allen Wirfs-Brock <[email protected]> 
> wrote:
> 
> On May 13, 2013, at 1:50 PM, Erik Arvidsson wrote:
> 
>> The way that WebIDL require Object.prototype.toString to return "[object 
>> TypePrototype]" for the interface prototype object and "[object Type]" for 
>> the instances seems to imply that every instance needs to have an own 
>> @@toStringTag.
>> 
>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-15.2.4.2
>> http://dev.w3.org/2006/webapi/WebIDL/#es-environment
>> 
>> If an instance does not have its own @@toStringTag, 
>> Object.prototype.toString will read through to the [[Prototype]] which would 
>> return the wrong string.
> 
> Well, toString just does a [[Get]] for @@toStringTag.  You are perfectly free 
> to implement it as a get accessor that takes into account whether the this 
> value is an instance or a prototype object. Not sure whether the complexity 
> is really worth it in most cases. I considered building something like that 
> into Object.prototype.toString but it seemed hard to justify and there was no 
> (ES) legacy reason for doing so.
> 
> OK. Something like this might work:
> 
> Object.defineProperty(Type.prototype, @@toStringTag, {
>   get: function() {
>     return 'Type' + (this === Type.prototype ? 'Prototype' : '');
>   }
> });
> 
> This is of course observable if we expose @@toStringTag.

@@toStringTag is just a ES code accessible extension mechanism for 
Object.prototype.toString.  Nobody ever claimed it wasn't observable.

> 
> The preferred way to over-ride toString should be via a toString method, not 
> via @@toStringTag. 
> 
> Agreed, but WebIDL currently mandates the result of Object.prototype.toString.

Maybe it shouldn't.  Part of the motivation here is to start migrating people 
way from thinking that O.p.toString is a reliable brand test, particularly WRT 
to anything new that is created.

Allen



_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to