[Laszlo-dev] init vs oninit vs super.init
Benjamin Shine
ben at laszlosystems.com
Tue Aug 7 11:45:35 PDT 2007
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
More information about the Laszlo-dev
mailing list