On Nov 26, 2012, at 9:44 AM, Tom Van Cutsem wrote:

> 2012/11/25 Allen Wirfs-Brock <[email protected]>
> 
> On Nov 25, 2012, at 12:41 PM, Tom Van Cutsem wrote:
>> 
>> However, with [[HasProperty]] removed, I assume the "in"-operator no longer 
>> triggers the "has" trap when it encounters a proxy, instead doing the 
>> proto-chain-walk itself and calling "hasOwn" on each level. This is OK, 
>> although it introduces an inconsistency with the other proto-chain-walking 
>> algorithms, which stop when encountering a proxy, letting the proxy take 
>> over from that point (this is the case for the "get", "set" and "enumerate" 
>> traps).
> 
> [[HasProperty]] is replaced with a HasProperty abstract operation (9.3.6) 
> that indeed makes generic calls to [[HasOwnProperty]] and [[GetInheritance]]  
> in a loop.  This also slightly bothers me. I guess I convinced my self that 
> an object that wanted to use a non-standard inheritance path could hide that 
> by reporting its inherited properties to be own properties.
> 
> I also occasionally find it troubling  inheritance semantics are replicated 
> in three different places [[GetP]], [[SetP]], and HasProperty and that it is 
> quite possible to get them out of sync.   I've come to accept the 
> replication/possible inconsistency but maybe we really do need to bring back 
> [[HasProperty]] so that it is possible to consistently over-ride all three.  
> I'd might be happy to swap [[Feeze]]/[[Seal]]/i[[sFrozen]]/[[isSealed]] for 
> [[HasProperty]]  :-)
> 
> Yes, this is a good point: one must be able to consistently override all 
> inheritance-related operations. Requiring an object with multiple prototypes 
> to report all inherited properties as "own" feels broken.
> 
> W.r.t. freeze and friends, I thought you were considering a more generic 
> [[GetIntegrity]]/[[SetIntegrity]] operation.

Yes, are you on board with that?






> 
> Cheers,
> Tom

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

Reply via email to