Thank you Mr Crowder, that was quite informative. Still I'm a little unsure how to proceed. If I got this right, it is common sense now that extending the DOM is the wrong thing to do. One of the main reasons is the possibility of name-conflicts. So I thought I might extend Objects with a JSON-Object (called 'builder' in my case) which contains all my methods and properties to (sort of) have my own namespace. But that would require a circular reference in my builder-object to the DOM-Element it is attached to (so the methods in my builder-object can work on the DOM they are attached to).
I'm wondering if there's any way to keep that nice programming- paradigm prototype introduced with it's $-function, that you can simply write $('myelement').myfunction() while avoiding the above- mentioned problems. I could write my own wrapper-method, like jQuery's $-function, but that would miss the whole point of working with prototype. How do other people work with this? Luke On Nov 22, 7:37 am, "T.J. Crowder" <t...@crowdersoftware.com> wrote: > Hi Luke, > > What you're talking about doing is called an "expando" property. > They're not covered by a standard AFAIK, although interestingly > Microsoft has an `expando` property on objects[1] (this is where the > name came from) which is a boolean saying whether you can do this. If > you do a web search on "expando" you'll find a lot more information > (and a studio album by Timothy B. Schmit, but leave that aside...). > (Ignore the statement on GreaseSpot that expandos relate to custom > attributes; they don't, the article is just wrong.) > > Prototype uses expando properties like mad (the whole concept of > "extending" an element[2] relies on expandos, and Prototype uses them > elsewhere as well), so if you're using Prototype, you're already > relying on the environment allowing expandos. But it's probably worth > noting that Prototype is moving away from expandos at some point in > favor of doing a jQuery-like wrapper thing instead. > > I'd avoid having your expando property value (directly or indirectly) > reference another DOM element, as that sets up the possibility of > circular references, and circular references that dip between the DOM > and JavaScript layers can cause memory leaks on IE. > > [1]http://msdn.microsoft.com/en-us/library/ms533747(VS.85).aspx > [2]http://prototypejs.org/learn/extensions > > Happy coding, > -- > T.J. Crowder > Independent Software Engineer > tj / crowder software / com > www / crowder software / com > > On Nov 21, 8:28 pm, Luke <kickingje...@gmail.com> wrote: > > > > > Thanks Walter. If that's the only reason I'm willing to take that > > risk. In my whole application I will only attach one variable, kind of > > like my namespace and this will give me some convenience when > > accessing that namespace. If it's conform to W3C standards and works > > in all browsers, I think it's ok. But is it? Can't find any > > documentation or specification on this > > > Luke > > > On Nov 21, 8:50 pm, Walter Lee Davis <wa...@wdstudio.com> wrote: > > > > I think that the basic reason for the separate store is to provide > > > insulation from any current, past, or future browsers tramping on a > > > key name you may choose today and test in some subset of all browsers. > > > Browser scripting is fun enough in IE with its amusing conflation of > > > Name and ID properties without getting into the weeds with a perfectly- > > > safe-seeming data element being confused for some completely other > > > property or method. > > > > Walter > > > > On Nov 21, 2010, at 2:15 PM, Luke wrote: > > > > > Hi, > > > > > is there anyting wrong with extending a DOM-Object with > > > > > $('myelement').myvariable = "something"; > > > > > or why is there the prototype-method store, which saves values in a > > > > seperate hash? > > > > > Thank you, > > > > Lukas > > > > > -- > > > > 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 > > > > athttp://groups.google.com/group/prototype-scriptaculous?hl=en > > > > . -- 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-scriptacul...@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.