This book is JavaScript evangelist Eric Elliott’s introduction to serious web application development with JS. Eric came to quite some attention recently, as he succeeded to crowd-fund his kickstarter project that promises some high-quality video courses on JavaScript programming. He finished this book in the course of that campaign and I was curious what he had to report on the state of the art of web development.

To give you a heads-up: This is neither a book for beginners nor is it a step-by-step guide to learning JavaScript. And that is a good thing! Eric’s title is the perfect book for intermediate developers who finally want to leave jQuery one-liners behind and enter the realm of production-ready code. This also means that there is no book-spanning project (though there are some small projects and also github links to more code).

The ten chapters are loosely divided into three parts. The first three chapters serve as a recap why JavaScript is awesome and how you can untangle all its amazing features to their full power. That comprises advantages of the language, functions (lambdas, closures, high-order functions, functional language flavors) and objects (different ways to instantiate objects, prototypal inheritance and thinking).

The section on promises and deferreds is a bit too short, for my taste. But I really fell in love with chapter 3 that finally managed to set my head straight concerning JavaScript’s OO features. I became enlightened, like Anton at the end of chapter 2 (hilarious short story, by the way). Make sure to check out Eric’s stampit library that for once not tries to mimic classical inheritance but provides a simplified path to prototypal OO.

Chapter 4 and 5 help to build the bridge to the later and more advanced topics by introducing several notions of code modularization and raising the sensitivity for separating presentational from data/logic layers of an application. When passing by this stuff, you also get a grasp of how popular frameworks, like Angular, Riot, or Backbone, incorporate those mechanisms. Chapter 4 guides you through the stages of planning, coding and deploying a tiny app with Node, Grunt and Browserify, while chapter 5 also introduces the synergy of Node and Express.

The remaining five chapters cover topics that almost every application has to deal with eventually, namely access control, logging, REST, feature toggle and internationalization. Unfortunately, those chapters get shorter and shorter until the last one, which only spans three pages. That’s a little drop of bitterness. Having said that, the author still dismisses the reader with a solid foundation in current web development techniques and enough knowledge to deepen the desired subjects individually.

A JavaScript style guide adds a nice final touch to a book, that I am going to consult every now and then to get the proverbial poke in case I ever doubt the power of prototypal OO again. If you are looking for an introduction to Node, a programming tutorial or some hands-on examples—keep looking. But if you are interested in a short reminder of Javascript’s awesomeness and why/how it has the quasi-monopoly in the web dev world, then this is for you.