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

