Are we really doing Object.assign for ES6? We postponed Object.mixin so we
should probably postpone Object.assign too.


On Wed, Dec 18, 2013 at 4:23 AM, A Matías Quezada <[email protected]>wrote:

> I can't see a better use for extra arguments than multiple extensions.
> This is how current libraries implement it and we expect to replace it with
> Object.assign. In case Object.assign accepts only two arguments I think
> this snippet will be everywhere
>
>     Object.assign(Object.assign({}, defaultParams), userParams);
>     // or
>     [ {}, defaultParams, userParams ].reduce(Object.assign);
>
> I think using properties descriptor at Object.assign will be a mix of
> concepts, and a pattern I see a lot less than _.extend, and we'll be able
> to do it anyway
>
>     Object.defineProperties(Object.assign({}, properties), descriptors);
>     // or
>     Object.assign(Object.create(something, descriptors), properties);
>
> And deep copy doesn't look like an option for me, as Brendan said it adds
> so much complexity for an edge case.
>
> I think accepting several source objects like _.extend, $.extend and
> angular.extend would be the more practical option.
>
>
> ---
> A. Matías Quezada
> Senior Javascript Developer
> [email protected]
>
>
>
> 2013/12/18 Andrea Giammarchi <[email protected]>
>
>> Rick I tend to aree with you if not that the second argument of
>> Object.create has basically reached zero libraries and popularity out there
>> due un-shimmable and "boring to write" common/usual properties.
>>
>> In this very specific case it would be inconsistent with the previous
>> argument too since that won't be checked through getOwnPropertyNames in any
>> case ... you know what I mean?
>>
>> Cheers
>>
>>
>> On Tue, Dec 17, 2013 at 7:06 PM, Rick Waldron <[email protected]>wrote:
>>
>>>
>>>
>>>
>>> On Tue, Dec 17, 2013 at 8:17 PM, Brendan Eich <[email protected]>wrote:
>>>
>>>> It's now or never. I agree multiple sources are useful enough to do
>>>> now; I don't see a different third parameter that would be precluded by
>>>> deciding this. But others may disagree.
>>>>
>>>
>>> A third Properties argument that matches the second Properties argument
>>> to Object.create() and Object.defineProperties
>>>
>>> class Cycle {
>>>   constructor(details) {
>>>     Object.assign(this, details, {
>>>       wheels: {
>>>         value: details.type === "tricycle" ? 3 : 2,
>>>         configurable: false,
>>>         writable: false
>>>       }
>>>     });
>>>   }
>>> }
>>>
>>> var trike = new Cycle({
>>>   color: "red",
>>>   type: "tricycle"
>>> });
>>>
>>> ... Which doesn't break the reduce pattern since the index would
>>> effectively be meaningless in that context, ie.
>>> Object.getOwnPropertyNames(Object(1)).length === 0;
>>>
>>> Anyway...I had originally pushed for Object.assign with multiple sources
>>> and dropped it when consensus seemed to hinge on "one target, one source".
>>> The third Properties argument is compelling and doesn't prevent using
>>> Object.assign as a primitive mechanism for library code to build on top of.
>>>
>>> Rick
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>


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

Reply via email to