On Aug 7, 2013, at 12:52 PM, Domenic Denicola wrote:
> (Forked from a public-script-coord thread; thought it would be useful to
> es-discuss as well.)
>
> From: Allen Wirfs-Brock [[email protected]]
>
>> On Aug 7, 2013, at 12:33 PM, Boris Zbarsky wrote:
>
>>> Just to make sure I understand the behavior of @@create: it can be invoked
>>> to create new objects, but cannot be invoked on an existing object, right?
>
>> Right, @@create just creates a new, uninitialized instance of a specific
>> kind of object (could be an exotic object with strange internal
>> representation). It is the responsibility of operations upon such objects
>> (including the constructors that initialize such instances) to recognize
>> them and whether or not they have been properly initialized.
>
> Allen, would you have time to write up exactly how @@create works for all of
> us? I think I understand it, based on piecing together a lot of threads since
> its inception, but since it will be a very important part of designing solid
> primitives for the web platform, a more complete outline would be helpful.
> For example, here are the questions that come to mind for me. I am sure the
> answers to them overlap substantially.
You should probably start with
http://wiki.ecmascript.org/lib/exe/fetch.php?id=meetings%3Ameeting_jan_29_2013&cache=cache&media=meetings:subclassing_builtins.pdf
In particular the first half of that deck.
>
> - What is the difference between @@create and the constructor? Which
> responsibilities belong to each?
> - How exactly does @@create play a role in subclassing and enabling better
> subclass support?
> - What role does @@create play in creating well-behaved classes, generally?
> - When is @@create necessary at all? When writing our own classes, or
> designing classes for the platform, when can we leave it out?
> - How will classes that use @@create differ from those that don't?
> - What problem exactly does it solve that ES5's non-stratified construction
> falls down for?
> - To what extent is it used in the ES6 built-ins, and for what purpose? Has
> it been "retrofitted" onto any older built-ins? If so, how does that change
> their behavior from how they were specced in ES5? If not, what differences
> does this cause between the older built-ins and newer built-ins?
> - Is there any mechanism in the spec, current or planned, for extracting a
> class's @@create value? If I got ahold of one, what could I do with it? E.g.
> `Map[@@create](somethingThatsNotAMap)`.
>
Which of these questions are still unanswered by the above doc?
Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss