On Oct 5, 2011, at 8:21 PM, John J Barton wrote:

> I think what's missing is Object.extend:
> 
> http://www.prototypejs.org/api/object/extend
> http://api.jquery.com/jQuery.extend/
> http://dojotoolkit.org/reference-guide/dojo/extend.html
> http://docs.sencha.com/ext-js/4-0/source/Object2.html#Ext-Object-method-merge
> http://code.google.com/p/fbug/source/browse/branches/firebug1.9/content/firebug/lib/object.js
> 
> just some examples in a few minutes. With extend, then we can write
> 
> var bar = Object.extend(Object.create(aMethodList), aPropList);

I agree we should specify Object.extend in ES6. It's the API form of the .{ 
"monocle-mustache" operator but generalized to non-literal RHS.

However, IIRC PrototypeJS uses for-in and does not filter out enumerable 
inherited properties. It also uses assignment. Neither is good for ES6. We want 
only "own" properties, including private-name-object-keyed ones. This is good 
motivation for a built-in.

Given Object.extend, does .{ pay for itself outside of the class pattern 
use-case? Does a play on dot connote the mutation of the LHS? I think "maybe 
not" and "no". If we have only Object.extend, we still roll up a popular and 
common de-facto standard. If we must have an operator, it should take 
non-literal RHS and contain = in the assignment operator style. So, .= 
(monocle-nostrils? monocle-thin-man-mustache? ugh).

/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to