|
From: Jordi 'I. M. <jmi...@or...> - 2000-10-31 18:26:16
|
Yes I know but makeDynLayer could also assign the prototype
...
eval(method+".prototype = new DynLayer")
..
..
Still speaking in theory
Scott Andrew LePera wrote:
> I think what's being overlooked in your idea is that prototype methods
> won't be inherited. makeWidget creates a string of the contents of the
> *constructor*; but it doesn't include the prototype properties.
>
> It looks like makeWidget creates an entire new constructor. If you
> passed DynLayer to makeWidget it would return a completely new object
> identical to DynLayer constructor as your widget base, plus any
> modifications you made. Is this a good approach?
>
> scottandrew
>
> Jordi 'IlMaestro' Ministral wrote:
> >
> > What is trying to do is, given that the toString method of a function return its
> > source code, is to add lines just after "function() {" and before the source, and then
> > eval the new function. So the function passed as parameter is rewriten.
> >
> > This way we can have clean widget constructors and automatically add all the
> > initializations code that make a widget a widget. If this code is to be changed we
> > don't have to bother editing th widget sources because that inheriting code is added
> > by the API and not hard-coded into each constructor.
> >
> > The idea is turn method to string, split into to strings: until { and after }, insert
> > our code between them and eval everything.
> >
> > Robert Rainwater wrote:
> >
> > > I'm not quite sure I follow your DynAPI.makeWidget. Could you explain
> > > that in a little more detail. I don't understand what makeWidget is
> > > trying to do there.
> > >
> > > Robert
> > >
> > > --
> > > Email: <mailto:rra...@ya...>
> > > PGP Key ID: 0x703D7F7C
> > >
> > > > I've been thinking about this for some tome now and our main problem here is
> > > > having all our widgets to share the DynLayer functionalities without sharing any
> > > > properties. We need some sort of initialization code such as:
> > > >
> > > > myWidget = function() {
> > > > // Init code
> > > >
> > > > // Assign id
> > > > this.id = ...
> > > >
> > > > // Widget stuff starts here
> > > >
> > > > }
> > > >
> > > > // Maybe not anymore
> > > > myWidget.prototype
> > > >
> > > >
> > > > However hard-coding it into all our widgets is a pain and when we need to change
> > > > something then we have to edit all of your widgets and we force people to
> > > > 'remember' whet has to be placed at the beggining of each constructor. I thing
> > > > this can be solved by having this method (this is the idea, I haven't been able
> > > > to code it)
> > > >
> > > > DynAPI.makeWidget = function(constructor) {
> > > > var code = window[constructor].toString()
> > > > // now we have the code
> > > > var header = code.substring(0,code.indexOf("{"))
> > > > var rest = code.substring(code.indexOf("{"))
> > > > var newcode = header + have all the common init stuff in a String here + rest
> > > > eval(constructor+" = "+newcode)
> > > >
> > > > // If needed attach prototying, assign variables, etc.
> > > > }
> > > >
> > > >
> > > > This way your widget code should be independent of the inheritance method
> > > > adopted. This I presume, I haven't tested. Tell me what you think
> > > >
> > >
> > > _______________________________________________
> > > Dynapi-Dev mailing list
> > > Dyn...@li...
> > > http://lists.sourceforge.net/mailman/listinfo/dynapi-dev
> >
> > _______________________________________________
> > Dynapi-Dev mailing list
> > Dyn...@li...
> > http://lists.sourceforge.net/mailman/listinfo/dynapi-dev
> _______________________________________________
> Dynapi-Dev mailing list
> Dyn...@li...
> http://lists.sourceforge.net/mailman/listinfo/dynapi-dev
|