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

Reply via email to