David Vallner wrote:
> Prototype-based OO *is* OO, even if you don't understand it. (I'll admit
> at this point I prefer the Self / IO style of prototype-based OO than
> Javascript's, but that's personal preference.)

Depending on your definition of what OO means, I might disagree.

JavaScript is nicely OO in that there are Objects that have Methods and
Properties, and an implicit scope ('this') inside those methods.

If you consider classes, and especially class inheritance, to be an
important part of OO, then you're in for a surprise. Not only does the
language not support it well, but even with some dirty hacks[1] there
are still serious limitations[2] when it comes to more than one level
of inheritance.

I like Ruby more than I like JavaScript, but don't get me wrong -
JavaScript has a lot going for it. First-class functions that are also
closures, with the ability to invoke them using arbitrary scope. The
ability to reopen a 'class' and add functionality. Terse literals for
associative arrays that preserve insertion order ;).

I just wouldn't want to have to code a LARGE application in JavaScript.
(At least not ECMAScript-263 rev 3. Newer, proposed specs have some
things going for them to make them nicer.)

[1] http://phrogz.net/JS/Classes/OOPinJS.html
[1] http://phrogz.net/JS/Classes/OOPinJS2.html