super.apply(this, arguments)

P T Withington ptw at pobox.com
Thu Dec 20 05:57:39 PST 2007


Interesting.  One wonders why we keep the silly fiction of naming the  
constructor after the class if it is really going to show up in the  
class as the `construct` method.  It's always bothered me that I have  
to write the class name in two places, and fix it in two places if I  
change my mind, or copy/paste a class to create a new class.

But, does the construct method cause allocation?  If so, it doesn't  
really solve my problem, since I really only want the initialization  
of the superclass constructor, not allocation.

It seems to me that what I really want is for there to be separate  
ways to apply `new` (to allocate a new instance using apply) and to  
apply the constructor method (to initialize a new instance using apply).

I want to be able to say:

class Foo extends Bar {

   function Foo () {
     super.initialize.apply(this, arguments);

I don't want to call `super.construct` because I don't want to  
allocate a new instance of my superclass, I just want to run the  
initialization that my superclass does.

I suppose I have to say:

     Bar.apply(this, arguments);

but now I have to type not only my class name, but also my superclass  
name in two places.

Or maybe we are going to be told this is yet another outdated wiki  
page that is leading us astray?

On 2007-12-20, at 00:02 EST, Garrett Smith wrote:

> There's a proposal that, I think, addresses that using construct:
>
> http://wiki.ecmascript.org/doku.php?id=proposals:static_generics
>
> Though in the context of a subclass' constructor, I don't know what
> the syntax would be.
>
> Garrett
>
> On Dec 19, 2007 9:46 AM, P T Withington <ptw at pobox.com> wrote:
>> Is this permitted syntax in a constructor:
>>
>>   super.apply(this, arguments);
>>
>> for the case where I want to pass all my arguments to my superclass
>> constructor?  If not, how does one do that, especially if the
>> constructor I am calling from takes a ...rest arg?
>> _______________________________________________
>> Es4-discuss mailing list
>> Es4-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es4-discuss
>>
>
>
>
> -- 
> Monkey, so they say, is the root of all people today.




More information about the Es4-discuss mailing list