On Oct 30, 2011, at 1:12 PM, Axel Rauschmayer wrote:

>> The object exemplar approach is just like self or selfish, except that it 
>> builds upon features that are already in JS.  Specifically, it uses the new 
>> operator instead of a new method and it names the initialization method 
>> "constructor" in order to tie into the object construction mechanisms that 
>> already exist in JS. 
> 
> 
> I’m trying to summarize, let me know if I made any mistakes:
> 
> With the new new approach, we will have four kinds of exemplars (which are, 
> roughly, “object factories”):
>   1. Object literals

I'm not sure I would classify a simple, unnamed object literal as an 
"exemplar".  When I introduce this term I had in mind a construct for 
expressing a named abstraction over a set of similar objects.  The name part is 
important because it is the name that allows talk about the set rather than the 
individual object in the set.  Object literals might be used as constituent 
elements in the definition but are not by them selves exemplars.

>   2. Function exemplars (constructor exemplars?)
>   3. Object exemplars (prototype exemplars?)
>   4. Object.create()

I  would consider (demote) Object.create to simply be part of the languages 
reflection API rather than  an actual language element. As such, we may not 
need to include it in this consideration.
> 
> The proto operator lets us use inheritance between any two #2 or #3 
> exemplars. That ensures compatibility with legacy code. Since instanceof 
> works for both kinds of examplars as well, the only possible hazard that is 
> left is function exemplar code trying to access ObjectExamplar.prototype, 
> e.g. to add new methods.
> 
> Object exemplar example:
> 
>    const Person = {
>        constructor(name) {
>            this.name = name;
>        },
>        describe() {
>            return "Person called "+this.name;
>        }
>    };
>    const Employee = Person <| {
>        constructor(name, title) {
>            super.constructor(name);
>            this.title = title;
>        },
>        describe() {
>            return super.describe()+" ("+this.title+")";
>        }
>    };
> 
>    let jane = new Employee();
>    console.log(jane instanceof Employee); // true
> 
> If object exemplars were to become part of ES.next, we would not need class 
> literals.
> 
> -- 
> Dr. Axel Rauschmayer
> [email protected]
> 
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
> 
> 
> 
> 

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

Reply via email to