If I do something like this: var GymnastFind = Class.create(GridBuild, Ajax.Application.Base.Prototype, UserState, { HEAD: ['MSOID', 'USAG', 'Description', 'DOB'], initialize: function(container, url) { this.url = url; this.container = $(container).select('div.grid_container')[0]; this.Form = $(container).select('form')[0] this.Form.observe('keyup', this.form_keyup.bind(this)); },
... code cut here ... I get an error in prototypejs, "parent.subclasses is undefied" (occurs at line 99) the code is: parent.subclasses.push(klass); Any ideas? Maybe I can't mix in Ajax.Application.Base, maybe I must inherit it? So am I correct in assuming that the Javascript allows you to inherit from more than one class, an in my previous "Object.extend(Object.extend ..." syntax I am doing just this? Thanks for the help. Karl.. On Nov 8, 2:45 am, "T.J. Crowder" <t...@crowdersoftware.com> wrote: > Hi Karl, > > Class.create accepts a base class and multiple mix-ins[1]. The way > JavaScript's instanceof operator works, you can't create a new class > from two disparate base classes and have the new class be an > "instanceof" both of the base classes, you have to choose one as a > base and mix-in the other, but that's fine if the code you quoted is > working for you, nothing is relying on instances of GymnastFind being > "instanceof" Ajax.Application.Base. > > So if you want it to derive from GridBuild and mix-in > Ajax.Application.Base: > > var GymnastFind = Class.create(GridBuild, > Ajax.Application.Base.prototype); > > (Note that for the base class, we specify the class [the constructor > function] rather than the prototype, but mix-ins are specified just as > an object, so we use the prototype of Ajax.Application.Base.) > > If you want to specify your own methods as well, just include them as > an object as a third parameter. > > [1]http://api.prototypejs.org/language/class.html > > HTH, > -- > T.J. Crowder > Independent Software Consultant > tj / crowder software / comwww.crowdersoftware.com > > On Nov 7, 6:21 pm, kstubs <kst...@gmail.com> wrote: > > > > > The following is working, but I am looking for the pure prototypejs > > equivelant. So, what would the equivilant code be for > > > var GymnastFind = Class.create(); > > Object.extend(Object.extend(GymnastFind.prototype, > > GridBuild.prototype)); > > Object.extend(Object.extend(GymnastFind.prototype, > > Ajax.Application.Base.prototype), { > > HEAD: ['MSOID', 'USAG', 'Description', 'DOB'], > > initialize: function(container, url) { > > this.UserActive = false; > > this.timer = null; > > ...... code cut here ...... > > > }); > > > In plain English: > > > Create a GymnastFind Class which inherits from GridBuild class and > > implements the abstract class Ajax.Application.Base. > > > Thanks, > > Karl.. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---