On Aug 8, 2012, at 11:23 AM, Brendan Eich wrote:

> The other advantage of an Object.extend or Object.update function is that 
> developers can polyfill. Yes, Object.extend in JS libraries relies on for-in 
> -- but Object.prototype is verboten, so that's mostly ok by convention.
> 
> The point is not that we should standardize Object.extend self-hosted via 
> for-in, as in PrototypeJS. Rather, we would maximize developer utility and 
> avoid the need for ES6->ES5 compilers if we were to provide an Object.update 
> or Object.assign (let's call it) that copies own properties of its second 
> argument into its first, shallow copying as if by assignment ([[Put]], not 
> [[DefineOwnProperty]]).

I'm not yet convinced that Object.update should be restricted to own 
properties. If you're only using object literals, then yeah, you want own 
properties only; you're basically using object literals as a poor man's named 
arguments. But if you're just taking an arbitrary object, there's less reason 
to expect that its relevant properties won't be inherited.

> This [[Put]] not [[DefineOwnProperty]] argues for the Object.assign name. The 
> "assign" trope argues against processing 3rd, etc. actual arguments like the 
> 2nd (as some library variants of Object.extend do).

Object.assign sounds pretty good. But I do like Object.update. Somehow the 
latter seems more evocative of what the programmer's trying to accomplish, 
rather than naming it in terms of a language mechanism.

Dave

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

Reply via email to