Thanks. But it is
function exemplar versus object exemplar
and not
constructor exemplar versus prototype exemplar.
Right?
On Oct 31, 2011, at 1:29 , Allen Wirfs-Brock wrote:
>
> 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
>>
>>
>>
>>
>
>
--
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