Hrm. Actually, subclass init method gets called. Superclass init
method doesn't get called unless the subclass calls superclass.init().
The below example is a bit misleading because brusselssprouts calls
super.init() before Debug.outputting.
-e
---=---===-------
Elliot Winard
Sr. Software Engineer
Webtop Team
---=---===-------
On Tue, Aug 7, 2007 at 2:45 PM, Benjamin Shine wrote:
Bret and I were going through a code change and wanted a clarification
on what order things were expected to happen:
<canvas>
<class name="cabbage">
<method name="init">
// called FIRST
Debug.write("cabbage.init (method name=init) on %w", this);
this.setAttribute("deliciousness", 0.35);
</method>
<handler name="oninit">
// called SECOND
Debug.write("cabbage.oninit (handler name=oninit) on %w", this);
</handler>
</class>
<class name="brusselssprout" extends="cabbage">
<method name="init">
super.init(); // calls method name="init" on cabbage
Debug.write("brusselssprout.oninit method on %w, deliciousness is
%f", this, this.deliciousness);
</method>
<handler name="oninit">
// called *after* cabbage's oninit handler
Debug.write("brusselssprout.oninit handler on %w, deliciousness is
%f", this, this.deliciousness);
</handler>
</class>
<cabbage id="cabby" />
<brusselssprout id="sprouty" />\
</canvas>
This produces the following output:
cabbage.init (method name=init) on #cabby
cabbage.oninit (handler name=oninit) on #cabby
cabbage.init (method name=init) on #sprouty
brusselssprout.oninit method on #sprouty, deliciousness is 0.350000
cabbage.oninit (handler name=oninit) on #sprouty
brusselssprout.oninit handler on #sprouty, deliciousness is 0.350000
...which is just what I expect: superclass methods called before
sublcass methods, method name="init" called before oninit handler.
Is this the guaranteed order of execution?
-ben