
Understanding Javascript OOP - old_sound
http://killdream.github.com/blog/2011/10/understanding-javascript-oop/
======
joubert
The ES6 draft spec now includes the (maximally minimal) class spec that was
hashed out at the July TC 39 meeting. You can read the spec here:
[http://wiki.ecmascript.org/doku.php?id=harmony:specification...](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts)
and see some examples here:
[http://wiki.ecmascript.org/doku.php?id=strawman:maximally_mi...](http://wiki.ecmascript.org/doku.php?id=strawman:maximally_minimal_classes)

There's a cool project, Harmonizr (<https://github.com/jdiamond/harmonizr>)
which transpiles ES6 to ES5, which you can leverage to start using classes,
modules, arrow syntax, etc. now. Demo:
<http://jdiamond.github.com/harmonizr/demo/demo.html>

~~~
hayksaakian
thank the lord, i can't imagine something as ubiquitous as javascript still
has no syntactically intuitive class system

~~~
darkstalker
The MooTools library implements declarative class syntax for regular
javascript:

<http://mootools.net/docs/core/Class/Class>

~~~
joubert
The next trick is for libraries to make sure their homegrown class systems are
migrated to ES6 classes, or interop with consistent semantics.

~~~
emehrkay
MooTools has always aimed to be compliant with the next version of Ecma. In a
lot of ways it is a shim for whatever is next.

------
zwieback
Thanks for that. In my mind I've been calling C++, C#, etc. "class-based"
programming since the design/programming phase is really focussed on classes.
I've not much experience with prototype-based programming other than the
occasional blurb. This is a nice intro.

~~~
protomyth
If you have the time, go look at an explanation of NewtonScript then Self.
NewtonScript takes the concepts of Self and created a pretty nice little
language that is a little more accessible than Self (unless you know
Smalltalk, then go with Self first).

I like prototype-based languages and really wish that NewtonScript had a
little better syntax. On the other hand, I have never been fond of Javascript
and don't know why.

<http://selflanguage.org>

<http://en.wikipedia.org/wiki/NewtonScript> and [http://waltersmith.us/wp-
content/uploads/2005/12/OOPSLA95.pd...](http://waltersmith.us/wp-
content/uploads/2005/12/OOPSLA95.pdf)

~~~
stan_rogers
Cognitive dissonance, likely. It doesn't look like what it is, no matter which
part of it you're using at the time. Its selfish features aren't Self, its
speech impediment isn't really a Lisp, its coffee-flavouring isn't Java... No
matter which door you open, you get a preliminary sense of _déja vu_ , then
realise that you haven't actually been there before; it's just something that
reminds you of something else. It takes a while to settle into JS mode, where
the language is just what it is, and not "sort of like X, but completely
different". (Once I'm there, I like to stay there—but there's always something
else to do that drags me into another language, and when I come back, I
experience the same cycle process again.)

------
rbellio
I was just looking for something like this last week, this is a great
tutorial, thanks for posting it up here.

When Anders was discussing the new TypeScript release, he was mentioning how
it more clearly mimicked the ES6 specification. Looking at some of the
examples posted by joubert, you can see the similarities.

TypeScript transpiles down to ES5 much like Harmonizr does as well.

Very interesting stuff.

------
jasonkostempski
I thought I had read it all at this point. I really like the deep dive into
Object. No one ever goes beyond Object.create() and that's usually just as an
example of how not to create new objects :)

------
justinj
or, for a shorter read, try [http://yehudakatz.com/2011/08/12/understanding-
prototypes-in...](http://yehudakatz.com/2011/08/12/understanding-prototypes-
in-javascript/)

------
migfromparis
Really good tutorial. I enjoyed reading it.

------
grandalf
This is superb.

------
jroseattle
very well done.

------
SwearWord
This is the best js tutorial I've seen in a while

------
andyl
Great tutorial - thank you.

