Object.define ==> Object.mixin??

Allen Wirfs-Brock allen at wirfs-brock.com
Wed Dec 12 11:13:19 PST 2012


On Dec 12, 2012, at 10:10 AM, John J Barton wrote:

> On Wed, Dec 12, 2012 at 10:05 AM, Allen Wirfs-Brock <allen at wirfs-brock.com> wrote:
> 
> On Dec 12, 2012, at 9:50 AM, John J Barton wrote:
> ...
> > But most of all we want this feature to land and not just spin around here.
> >
> > jjb
> 
> As Object.mixin or as Object.define??
>  
> Object.mixin 
> 

What should be the effect of trying to "mixin" a property that already exists (as an own property) of the target object.

Object.define(target,src) would presumably have redefined such properties using the Object.defineProperty rules. Is that what Object.mixin should do.  It could, have different rules.

For example, it could simply replace an existing target property (if the existing property is configurable).  Or it could skip existing properties or throw an error if a property exists.

Replace is attractive, but it may or may not be what you want for accessor properties.  Consider:

var objTarget = {get foo() {/*target*/...}});
Object.mixin(objTarget, {set foo(v) {/*src*/...}});

after the mixin do you want objTarget to look like:
   {set foo(v) {/*src*/...}}   //replace semantics gives you this
or
   {set foo(v) {/*src*/...},
    get foo() {/*target*/...} }  //Object.defineProperty semantics gives you this

Allen

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121212/800ebf36/attachment-0001.html>


More information about the es-discuss mailing list