The spec says for the various Object functions that the properties are
iterated in "list order". Doesn't this indicate the order is defined?


On Wed, Dec 12, 2012 at 4:57 PM, John J Barton
<johnjbar...@johnjbarton.com>wrote:

>
>
>
> On Wed, Dec 12, 2012 at 11:13 AM, Allen Wirfs-Brock <al...@wirfs-brock.com
> > wrote:
>
>>
>> On Dec 12, 2012, at 10:10 AM, John J Barton wrote:
>>
>> On Wed, Dec 12, 2012 at 10:05 AM, Allen Wirfs-Brock <
>> al...@wirfs-brock.com> wrote:
>>
>>>
>>> On Dec 12, 2012, at 9:50 AM, John J Barton wrote:
>>> ...
>>> > But most of all we want this feature to land and not just spin around
>>> here.
>>> >
>>> > jjb
>>>
>>> As Object.mixin or as Object.define??
>>>
>>
>> Object.mixin
>>
>>
>> What should be the effect of trying to "mixin" a property that already
>> exists (as an own property) of the target object.
>>
>> Object.define(target,src) would presumably have redefined such properties
>> using the Object.defineProperty rules. Is that what Object.mixin should do.
>>  It could, have different rules.
>>
>> For example, it could simply replace an existing target property (if the
>> existing property is configurable).  Or it could skip existing properties
>> or throw an error if a property exists.
>>
>> Replace is attractive, but it may or may not be what you want for
>> accessor properties.  Consider:
>>
>> var objTarget = {get foo() {/*target*/...}});
>> Object.mixin(objTarget, {set foo(v) {/*src*/...}});
>>
>> after the mixin do you want objTarget to look like:
>>    {set foo(v) {/*src*/...}}   //replace semantics gives you this
>> or
>>    {set foo(v) {/*src*/...},
>>     get foo() {/*target*/...} }  //Object.defineProperty semantics gives
>> you this
>>
>
> The general character of Object.mixin is to produce an object with all of
> the properties of both arguments. In the case of duplicate *properties* we
> want replace LHS with RHS. In my opinion your example is not such a
> duplicate. Rather we have two functions one on each argument. I would
> expect the general character to apply: two functions on the result.
>
> Or maybe this should just throw. Either of the above choices will cause
> surprising errors if the developer expected the other result.
>
> jjb
>
>
>
>>
>> Allen
>>
>>
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to