Ok, and what do you say about the namespace issue? That's actually the one that is pressing me more, in contrast to Werner ;)
regards, Martin On 1/4/06, Thomas Fuchs <[EMAIL PROTECTED]> wrote: > Am 04.01.2006 um 00:54 schrieb Werner Punz: > > Well that is the problem the alteration of object also broke the > > for loop on the Array, because the basic prototype structures of every > > object in the system were altered. > > > > Similar issues could arise at other parts of the lib, > > the already fixed iterate over object (and therefore iterate over > > everything javascript object related) bug just was the most > > prominent showcase of those issues. > > Heya, > > The problem here is really not Prototype extending JavaScript built- > in objects. > > JavaScript is a dynamic language and you're not forbidden from > extending the > built-ins to become more programmer-friendly. > > It really all boils down to one thing (let the namespaces aside for > now): > > The for-in loop. > > This is a language construct that iterates over all properties of an > object. > Because JavaScript is a dynamic language where you can add/change > Object prototypes at all times, this construct doesn't guarantee the > kind of > properties which are returned. > > According to the ECMAScript Language Specification: > "Enumerating the properties of an object includes enumerating > properties of its prototype". > > So the problem is that the for-in loop is just not used with that in > mind when > it's called upon for stuff like iterating over the elements of an array. > > (sadly, the JavaScript "DontEnum" attribute can't be set manuall, > so it can't be used to mask/hide individual properties (like the > addtional functions on the Object prototype): > "DontEnum: The property is not to be enumerated by a for-in > enumeration"). > > IMHO, trying to not to use extensions for built-in objects (where > they really make sense, > see Prototype's Enumerables) to avoid errors because of "misinformed > programming" > in other libraries is not using the JavaScript language for what it is. > > Note that even Brendan Eich, the "father of JavaScript" recommends > that if > you want extensions on built-in objects, than just do it (as it's > meant for that). > (He also acknowledges the for-in loop problem and is in favor of > adding something to the next Version > of JavaScript so you can define DontEnum properties, that won't show > in for-in loops.) > > -Thomas > _______________________________________________ > Rails-spinoffs mailing list > [email protected] > http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces _______________________________________________ Rails-spinoffs mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs
