On Sat, Nov 12, 2011 at 4:15 PM, Jake Verbaten <[email protected]> wrote: >> >> >> Let's argue about specifics or we'll get nowhere. Do you think Irakli's >> selfish.js extend (https://github.com/Gozala/selfish/blob/master/selfish.js) >> is the way to go, or Prototype's quite different form? > > I'd personally prefer Prototype's extend because it actually extends an > object rather then creating a new object whom's [[Prototype]] is the > extended object.
We could start by classifying the existing solutions. Perhaps there are better terms, here is my start: "shallow" vs "deep" usual defn: http://en.wikipedia.org/wiki/Object_copy "merge" colliding properties are resolved by selecting a winner, typically the left most object "flatten" the properties of the [[Prototype]] (proto-linked objects) become 'own' properties of the result "own" the own-properties are used Prototype's two argument extend(): produces an object equal to the "flatten shallow merge" on the arguments.. https://github.com/sstephenson/prototype/blob/master/src/prototype/lang/object.js#L51 Gonzala's gist's multi-argument extend() produces a function object with a .prototype from "shallow merge own" on the arguments, a prototype chain linking this.prototype, properties from |this|, and a body that creates an object I agree that calling Gonzala's function extend() might be confusing. We could all it Object.class() ;-) I don't agree that Prototype's extend() is clearly a winner > > Even though the latter may be useful, I'd rather have an Object.make or > Object.createSimple for that. > I think the primitive we need to agree on is the copy. jjb _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

