Extended Object Literals to review
Jorge
jorge at jorgechamorro.com
Mon Mar 14 14:14:42 PDT 2011
On 14/03/2011, at 21:34, P T Withington wrote:
> On 2011-03-14, at 14:29, Jorge wrote:
>>
>> Isn't that the purpose of Object.getPrototypeOf() ?
>
> If I have a class `c` whose superclass is `s`, I'm trying to understand how I can get from an object that is an instance of `c` to the superclass. I believe the current desugaring that Alan proposed, which obeys Brendan's recommendation that `constructor` be a property of the prototype results in:
>
> o = new c();
> o.constructor === c
> o instanceof c => true
> o instanceof s => true
> o.constructor.prototype instanceof s => true
>
> but:
>
> o.constructor.prototype.constructor === c
>
> ?
>
> I don't see how I can recover `s` from `o` (or `c`), which seems like a useful operation. What am I missing?
ISTM, you would just need to follow the [[prototype]] chain, like so:
function S () { }
S.prototype.constructor= S;
function C () { }
C.prototype= new S;
C.prototype.constructor= C;
o= new C;
do {
o= Object.getPrototypeOf(o);
console.log(o && o.constructor);
} while (o);
--> OUTPUT:
function C() { }
function S() { }
function Object() { [native code] }
null
No ?
--
Jorge.
More information about the es-discuss
mailing list