Object.define ==> Object.mixin??

Allen Wirfs-Brock allen at wirfs-brock.com
Wed Dec 12 10:44:59 PST 2012


On Dec 12, 2012, at 10:23 AM, John J Barton wrote:

> 
> 
> 
> On Wed, Dec 12, 2012 at 10:18 AM, Allen Wirfs-Brock <allen at wirfs-brock.com> wrote:
> 
> On Dec 12, 2012, at 10:05 AM, Brandon Benvie wrote:
> 
>> All the Object functions that operate on multiple properties are currently specified using pendingException which reports the first thrown exception after going through all the properties. defineProperties, freeze, etc.
> 
> In, ES6.  This is a breaking (hopefully nothing) change from ES5 that was suggested by Mark Miller.
> 
> The desire is to decrease the non-determinism that an early throw introduces.  
> 
> How can multiple calls to Object.mixin with identical state result in different results?

Because the order that the source properties are visited is unspecified.  It can differ among implementations and in theory could even differ within a single implementation.

>  
> In the ES6 approach all property updates that can occur will occur, before the exception is thrown instead of leaving the object in a less well defined partially updated state.
> 
> If an exception is thrown because of an error in Object.mixin, what state is the object in?  Will the spec define that state?

Yes, all property additions (to the target object)  that can complete will complete.

Allen


> 
> jjb

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121212/fe8633f8/attachment.html>


More information about the es-discuss mailing list