DailyJS

Learning Advanced JavaScript

2010-01-08 00:00:00 +0000 by Alex R. Young

Many readers have been asking me how to learn JavaScript beyond simple
web interface hacking. People are transitioning from those who consume
JavaScript resources as a way to implement web design to full-blown
JavaScript developers -- reaching out beyond jQuery and similar
frameworks to discover graphical libraries and unit testing systems.

Here are a few ideas and tips to learn advanced JavaScript.

Prototype

Unlock the power of prototypal inheritance early on. If you're using a
library to write object-oriented JavaScript, try writing a project using
only JavaScript's built-in prototypal inheritance.

You'll learn a lot about JavaScript very quickly, and learn to use
anonymous functions to elegantly plug the gaps in the language -- using
functions as namespaces and other interesting tricks.

You don't actually need OO libraries in JavaScript once you master
these techniques.

Mistaken Assumptions

If you're already familiar with C, Java, Ruby, Python and so on you
might have incorrect preconceptions about how JavaScript works.

One fun little surprise is block scopes -- or the lack of them. Blocks
don't introduce scope, there's only function-level scope. If you start a
block with for or if and there are
var delcarations inside it, those variables will be visible
to the entire function.

Another little surprise is the behaviour of the equality operator:
== doesn't always behave as you'd expect:

js> '' == '0'
false
js> 0 == ''
true

If this has got you worried, I recommend:

Reading Code

Another way to pick up more advanced JavaScript is to read what other
people have written. There are loads of great JavaScript authors writing
open source code:

A good way to learn techniques this way is to look out for common
patterns, then figure out how they work when you need them. For example,
if you like the way JSpec's API has its own DSL and you'd like to write
a JavaScript DSL for a project, pick apart JSpec and see how it works.

Authors

Through my own years of JavaScript hacking, I've always gone back to
Douglas Crockford's work.

David Flanagan, the author of JavaScript: The Definitive Guide is another authority on
the topic. He blogs about JavaScript and has recently written about
CommonJS.