Function.create
Allen Wirfs-Brock
allen at wirfs-brock.com
Sat Sep 24 16:45:21 PDT 2011
On Sep 24, 2011, at 9:03 AM, David Bruant wrote:
> ...
> I'm a big fan of the proto operator proposal, however, as raised
> previously this operator relies on the object being created to have an
> intialisation syntax. This prevents, for instance, Date objects to have
> a custom prototype with this method. I am not very familiar with it yet,
> but I think that if they ever came to life, ParallelArrays [2] would
> suffer from the same problem.
> By the way, could someone add this concern as a note ("open issue" or
> "limitation" or something like this) in the proto operator page, please?
>
The solution for Date that I intend to implement for ES.next is to respecify Date so it uses a private named property instead of the [[PrimitiveValue]] internal property to store the time value. The primary thing this changes is that private names properties are inheritable. That means that you will be able to subclass date like so:
let ExtendedDate = Date <| function (...args) {
super.constructor(...args); /*this will initialize the private time value property */
/* any ExtendedDate constructor initialization */
}
It will probably makes sense to redefine all the private state internal properties in a similar manner and hence make them all
"subclassable" . With private names available to implement private instance variables the only things that really need to be non-inheritable "internal properties" are the semantic methods such as [[Get]], [[Put]], [[DefineOwnProperty]].etc.
Allen
More information about the es-discuss
mailing list