this also causes problems.  if you attach an object (for example, the
list
uses an object for the style details) to the prototype, it only attaches
a
link to a single instance of this object.  this results in each instance
having the same style.  This is just a simple example of how each type
of
paramater assigning is different.

The above problem does not come into effect with "primative" values such
as numbers and boolean.

Dave Edelhart wrote:

> One way to reduce memory bloat and initialization time is to declare
> the local properties of an object as prototype properties. Prototype
> properties do NOT take up extra space when an object is instantiated
> UNLESS you change the instances' local value. For instance,
>
> function myObj(){
>   this.fooForLuv = 2;
> };
>
> takes up more memory/time than
>
> function myObj(){
> };
> myObj.prototype.foForLuv = 2;
>
> A longer example is my rewrite of the button widget. Note that I
> share the methods for mouse events from the prototype, instead of
> declaring them for each instance, as well as setting the button
> default colors as class prototype properties. ( I also retain a
> reference to component layers to allow for later color changes on
> rollover and such.)
>
> // CODE ///////////
>
> function dButton() {   // Image() or "string"
>   this.onConstruct(this, arguments);
> };
> dButton.prototype = new DynLayer;
>
> // FEATURES
>
> dButton.prototype.buttonColor = '#CECECE';
>
> ..
>
> dButton.prototype.hiliteColor     = '#FFFFFF';
> ..
>
> // METHODS
>
> dButton.prototype.onConstruct = function(db, args){
>     db.DynLayer = DynLayer;
>     db.DynLayer();
>
>     if (typeof(args[0])=="string") {
>       db.setText(args[0]);
>     } else if (typeof(args[0])=="object") {
>       db.setImage(args[0]);
>     }
>
>     db.face   = new DynLayer(null,0,0,1,1,db.buttonColor, true, 3);
>     db.addChild(db.face);
>
>     db.hilite = new DynLayer(null,0,0,1,1,db.hiliteColor, true, 1);
>     db.addChild(db.hilite);
>
>     db.shadow = new DynLayer(null,0,0,1,1,db.buttonColor, true, 2);
>     db.addChild(db.shadow);
>
>     db.setBgColor(args[1] || db.buttonColor);
>
>     db.listener = new EventListener(db);
>     db.listener.oncreate    = dButton.prototype.liOnCreate;
>     db.listener.onresize    = dButton.prototype.liOnResize;
>     db.listener.onmousedown = dButton.prototype.liOnMousedown;
>     db.listener.onmouseup   = dButton.prototype.liOnMouseup;
>     db.listener.onmousemove = dButton.prototype.liOnMousemove;
>     db.listener.onmouseout  = dButton.prototype.liOnMouseout;
>     db.addEventListener(db.listener);
> };
>
> ..
>
> // listener methods
>
> dButton.prototype.liOnCreate = function(e) {
>   var o = e.getTarget();
>   o.setButtonColor(this.buttonColor);
>   if (o.label) o.setText(o.text)
>   if (o.w==null && o.h==null) {
>     if (o.label) o.setSize(o.label.w+4,o.label.h+4);
>     else if (o.imglyr) o.setSize(o.imglyr.w+4,o.imglyr.h+4);
>   } else o.recenter();
>   if (o.label) {
>     o.label.setVisible(true);
>   } else if (o.imglyr) o.imglyr.setVisible(true);
> };
>
> ..
>
> dButton.prototype.liOnMouseup = function(e) {
>   var o = e.getTarget();
>   if (o.enabled) o.setUp();
>   if (this.dataItem) this.dataItem.onClick(o);
> };
>
> ///// END CODE //////////////
>
> Also I always use a discrete onConstruct() method so that if I decide
> to subclass a widget I can avail myself of the parent classes'
> constructor.
>
> For instance if I decide to write a child class of dButton(even if
> the only reason is to have a different default color scheme), it
> would look like this:
>
> // CODE ////////
>
> function dBlackButton(){
>   this.onConstruct(this, arguments);
> };
>
> dBlackButton.prototype = new dButton();
> dBlackButton.prototype.buttonColor = '#000000';
> dBlackButton.prototype.hiliteColor = '#999999';
> dBlackButton.prototype.labelColor  = '#FFFFFF';
>
> // END CODE ////////
>
> that's a pretty tight package for a whole new subclass! Also if you
> need to work code around the construction sequence you can write a
> new onConstruct() method that takes advantage of the old code:
>
> /// CODE ////////
>
> dBlackButton.parentClass = new dButton();
>
> dBlackButton.prototype.onConstruct(dbb, args){
>   this.parentClass.onConstruct(dbb, args);
>   dbb.foo = 1;
>   dbb.bar();
> };
>
> =====
> =======================
> 'Providing year 2001 consultations at rates as low as $5,000 an hour.'
> Dave Edelhart
> Director of Operations, Manatee Bay Productions
> www.manateebay.com
> [EMAIL PROTECTED]
>
> __________________________________________________
> Do You Yahoo!?
> Get personalized email addresses from Yahoo! Mail
> http://personal.mail.yahoo.com/
>
> _______________________________________________
> Dynapi-Help mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/dynapi-help

--
Michael Pemberton
[EMAIL PROTECTED]
ICQ: 12107010


_______________________________________________
Dynapi-Help mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/dynapi-help

Reply via email to