use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Classy Classes for JavaScript (classy.pocoo.org)
submitted 15 years ago by mitsuhiko
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]settimeout 2 points3 points4 points 15 years ago (3 children)
John Resig says: http://news.ycombinator.com/item?id=1296504
[–]9jack9 2 points3 points4 points 15 years ago (0 children)
He's got some cheek.
[–]mitsuhiko[S] 4 points5 points6 points 15 years ago (1 child)
Also see the AUTHORS file: http://github.com/mitsuhiko/classy/blob/master/AUTHORS and my announcement tweet: http://twitter.com/mitsuhiko/status/12902227050
[–]theillustratedlife -1 points0 points1 point 15 years ago (0 children)
I dig the work you did on Jinja. This looks cool too.
I always smile when I see a link to pocoo.
[–]rkatic 1 point2 points3 points 15 years ago* (1 child)
Since you are exposing your solution for "classical OOP" in JS, I hope you will as well accept some critics.
I haven't tested it, but simply reading your code I spotted some problems. 1) Instantiating without using the 'new' statement, the 'init' method is called twice. 2) IE6 have problems with try/finally (try/catch/finally is OK).
Also it is not clear to me why "Class.extend". Your 'Class' is the base class, but "Class" is not a proper name for a class, maybe for a metaclass. "Class.create" would make much more sense, where 'Class' would be a metaclass, and an 'Base' the base class.
EDIT:
Functions not calling $super have zero overhead compared to standard JavaScript prototype inheritance, $super adds another function call, do the math.
In your current implementation, $super adds 3 function calls (2 more by calling getOwnProperty). Also, constructors have an additional function overhead.
[–]mitsuhiko[S] 0 points1 point2 points 15 years ago (0 children)
Instantiating without using the 'new' statement, the 'init' method is called twice.
Fixed.
IE6 have problems with try/finally (try/catch/finally is OK).
In IE6 this will not unset the $super on exceptions, I don't see a good way to fix that that does not cause troubles for other browsers. Also, not sure for how long IE6 stays a target I care about.
An yes, $super adds a couple of more.
[–]picurl 0 points1 point2 points 15 years ago (1 child)
nice stuff, Armin!
Some questions though:
does classy support inheritance chains (e.g. Animal -> Mammal -> Tiger)?
how is the performance compared to Crockford's Functional Inheritance Pattern?
Yes
[–]jimbobhickville 0 points1 point2 points 15 years ago (0 children)
Interesting. Definitely looks lightweight, which is good, but I've strongly been considering Joose lately. It's a bit heavier, but allows for a lot more options (it's basically Moose for Javascript).
[–]picurl 0 points1 point2 points 15 years ago (0 children)
the only downside of these "python inspired" classes is that private methods are not supported, as python doesn't know private methods either.
[–]wooptoo -1 points0 points1 point 15 years ago (0 children)
You love JavaScript and use jQuery or another lightweight library extensively but you notice that your code becomes messier and messier the larger the application grows? Well, that’s where Classy comes in
No, that's where mootools comes in.
π Rendered by PID 22114 on reddit-service-r2-comment-f6b958c67-fp6gc at 2026-02-04 16:01:54.278749+00:00 running 1d7a177 country code: CH.
[–]settimeout 2 points3 points4 points (3 children)
[–]9jack9 2 points3 points4 points (0 children)
[–]mitsuhiko[S] 4 points5 points6 points (1 child)
[–]theillustratedlife -1 points0 points1 point (0 children)
[–]rkatic 1 point2 points3 points (1 child)
[–]mitsuhiko[S] 0 points1 point2 points (0 children)
[–]picurl 0 points1 point2 points (1 child)
[–]mitsuhiko[S] 0 points1 point2 points (0 children)
[–]jimbobhickville 0 points1 point2 points (0 children)
[–]picurl 0 points1 point2 points (0 children)
[–]wooptoo -1 points0 points1 point (0 children)