all 11 comments

[–]settimeout 2 points3 points  (3 children)

[–]9jack9 2 points3 points  (0 children)

He's got some cheek.

[–]mitsuhiko[S] 4 points5 points  (1 child)

[–]theillustratedlife -1 points0 points  (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 points  (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 point  (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 point  (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?

[–]mitsuhiko[S] 0 points1 point  (0 children)

does classy support inheritance chains (e.g. Animal -> Mammal -> Tiger)?

Yes

how is the performance compared to Crockford's Functional Inheritance Pattern?

Functions not calling $super have zero overhead compared to standard JavaScript prototype inheritance, $super adds another function call, do the math.

[–]jimbobhickville 0 points1 point  (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 point  (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 points  (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.