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