Which JavaScript Book has Taught me the Most?

I recently posed an interesting question to myself: Which JavaScript book has taught me the most?

Now I own many books on JavaScript. Some are specific to a framework, but most apply to vanilla JavaScript. But I didn’t limit my question to any subset of JavaScript. If it had anything to do with JavaScript, it was a candidate.

I enjoy books, so it was a fun exercise to go through each of my books and try to make a decision about which ones have taught me the most. Now to be fair, there are a few books I own that I have not finished reading. One I just purchased and haven’t even started yet. Now the whole process was very subjective, but the results were interesting; at least they were interesting to me.

In the end Douglas Crockford’s book JavaScript: The Good Parts didn’t make the cut for the final three. It was close, but I felt I needed to go with another book. Also, none of Kyle Simpson’s books made the top three. I have really enjoyed his books, but I was looking for the books that have taught me the most.

So here are the top three…

David Flanagan’s book JavaScript: The Definitive Guide was probably my top choice, not because I have sat down and read this book cover to cover, but just because how much I have referred to this book. This book is usually one of the first locations I go to when I have a question. It is a book I trust, so I usually weigh information on the internet with the information contained in this book. I’ve owned more than one edition of this book throughout the years. I think it was probably the first JavaScript book I purchased. Anyway, I’m pretty certain I have spent a good deal of time in this book and it has taught me a lot.

Next I chose JavaScript Patterns by Stoyan Stefanov. This book expanded my view of JavaScript and what it can do. Everything in this book is very practical. It is a concise book, but has a lot to offer. Some of the most important patterns I use, I first learned from this book.

My third choice was a bit of a surprise. I’ve been interested in functional programming of late, and I think that interest may have affected my choice. The third book is Functional Programming in JavaScript by Luis Atencio. Functional programming is a different paradigm from what I am used to, so obviously there is a lot to learn. Though this book is not the only source I have learned functional programming from, it has provided a good deal of information.

So there you have. My top three. Are there books you would add to the list? Which book taught you the most?


Another Book from the You Don’t Know JS Series

Several weeks ago I reviewed the book ES6 & Beyond. I found it to be the best source for ES6 features in JavaScript. I am about finished with another book in the You Don’t Know JS series entitled: this & Object Prototypes.

Kyle Simpson, the author of the You Don’t Know JS series, is very knowledgable when it comes to JavaScript, and he doesn’t disappoint in this book. I especially found the detailed discussion regarding the keyword this very informative. this can be difficult to grasp fully and Kyle deals with it thoroughly. He organizes the discussion in such a way that the concepts affecting this and its value are easy to compartmentalize.

The second part of the book is object prototypes. Before diving into prototypes, he makes sure to cover objects in good detail. So you have a grounding as you dive into prototypes. I also found this section very informative and gained new insights.

If I were forced to point out a negative with the book, it would be the ongoing discussion of whether JavaScript uses the right terms for Object Oriented design, inheritance, and so forth. Kyle prefers the term Delegation Oriented design because of how prototypes actually work. These tangent discussions involved a lot of class theory and were insightful, but I found them less useful for the practical side of my brain which is usually looking for application.

If you would like to deepen your understanding of this and prototypes in JavaScript, it is a must ready. So pick up a copy and jump right in.

A Little Over 200 Pages, but a Wealth of Information

I did a review a couple of months ago about my favorite book on JavaScript. This review is on another favorite of mine: JavaScript Patterns by Stoyan Stefanov.

Stoyan begins the book by describing programming patterns as solutions to common problems. Patterns are not necessarily code that you can copy and paste, but more of a best practice solution.

Stoyan is very thorough in the patterns he presents. He begins with basic patterns, which are as simple as how you write your code. He goes on to address literals and constructors, functions, object creation patterns, code reuse patterns, design patterns and DOM patterns. With certain patterns he presents multiple approaches.

I have adopted several of the patterns that I have read about in this book, but more importantly than the patterns I’ve adopted are the things I have learned. Stoyan explains the problems that create the need for a pattern and the reasons behind certain patterns. I found myself learning an immense amount from these explanations. They are real world problems with real world explanations.

This book is definitely one of my favorites. Can I have two favorites?

If you haven’t read this book yet, I highly recommend it. Not only for the patterns presented, but for the information you can learn about JavaScript.

Book Review: The Principles of Object-Oriented JavaScript

For my first entry of the new year, I would like to do a book review. I have been reading The Principles of Object-Oriented JavaScript by Nicholas C. Zakas for several weeks now.

I was attracted to this particular book because of the promise in the title. I’m always wanting to learn new concepts about how to use JavaScript to the fullest and the object-oriented nature of JavaScript, I feel, is one of its more powerful features.

The book is a pretty quick read. It is less than 100 pages even if you count the index. So it targets a very specific topic.

I found it to have some good information on objects, constructors and prototypes. It also addresses inheritance very well. However, where I felt a little let down is with its application. It does include some object patterns, but I was looking for more. I wanted to see more about how to apply the object-oriented nature of JavaScript to coding.

Despite the fact that it is missing some of that application, I still think it is a great book that will help you better understanding objects and prototypal inheritance in JavaScript. It delves into some little understood features of objects. So if you are looking to expand your knowledge of object-oriented programming in JavaScript and the nature of objects, you may want to pick up this quick read.

JavaScript ES6

The ES6 or ES2015 standard for JavaScript provided a number of enhancements. Many of those are now working in all modern browsers. Developers that use transpilers have been taking advantage of the new features for some time now. But maybe some of you have held back.

Well, unless you are not using a transpiler AND you are targeting older browsers, you can begin to take advantage of ES6 features. If you need to get up to speed with ES6, here are a few resources.

First, I find it helpful to check support for ES6 features for the browsers or environments I am targeting. You can do that by going to: https://kangax.github.io/compat-table/es6/. The compatibility table is easy to use and it shows all the different environments that you may be targeting.

Second, the best reference source I have found for explaining all of the ES6 features is the book: ES6 & Beyond by Kyle Simpson. It is part of the You Don’t Know JS series. It is the most complete resource I have found.

Finally, at All Things JavaScript we have created a YouTube playlist of all our training videos on ES6 features. Each time we create a new training video on an ES6 feature, we will add it to the playlist. You can access the playlist here.

The Most Unique Book on JavaScript

When I first read the title of this book, it immediately caught my attention. You have to admit If Hemingway Wrote JavaScript by Angus Croll is an intriguing title. I immediately wanted to find out what the book was about. I have not finished reading it yet, but one thing I can say with a great amount of certainty is that this is the most unique book on JavaScript I have encountered.

The premise of the book is that 25 famous authors have been given an assignment to solve a problem in JavaScript. Not every author is given the same assignment, but enough authors have each assignment that you get to see multiple approaches.

For each author there is first a discussion of their writing style, and then the solution to the assignment is presented. The assignment is completed in a way that reflects the style of the author. I have found it a very interesting read. Not only because of the different solutions to the assignments but the discussion about the authors is also intriguing.

So what does this book have to say about JavaScript? In his introduction, Angus Croll calls JavaScript the “most literary of computer languages”. What exactly does he mean by that? Well, here is my take.

Many languages are like a paint-by-number set. There is a certain way to accomplish the task. You can use different numbers if you choose to. And you can paint outside the lines and things may end up fine. But many times if you don’t follow the method used by so many before you, you end up with an inferior product.

With JavaScript, you are given the entire palette and a blank canvas. Yes it is possible you will end up with something that is a complete mess, or looks very much like a child created it. But you can also end up with something that is beautiful and unique. Even the same picture can be painted in many different ways.This, I believe, is one of the messages of If Hemingway Wrote JavaScript.

I love this statement from the introduction.

Natural language has no dominant paradigm, and neither does JavaScript. Developers can select from a grab bag of approaches–procedural, functional, and object-oriented–and blend them as appropriate. Most ideas can be expressed in multiple ways, and many JavaScript programmers can be identified by their distinct coding style.

If you have any interest in literature and JavaScript, pick up a copy. You won’t be disappointed.

My Favorite Book on JavaScript

My first degree from college was a BA in English. The only reason I mention this is to point out that I love to read and that I can sometimes be overly critical of certain books. Because I love to read, I have purchased numerous books on JavaScript.

I’m very analytical about the books I purchase. I won’t buy just any book on JavaScript. But despite that, as I take a quick look at my library, I have over a dozen books just on JavaScript. That doesn’t even include the books on various frameworks and libraries.

So which book is my favorite? Without any further ado, here it is:

This book serves two purposes for me. It acts as a reference which I use several times a week for that purpose. The index is well done, which is necessary for a reference book. Second, it also works quite well as an instructional tool. If there is something in JavaScript I am not familiar with, I can always turn to this book for an explanation of how it works or how to use it.

The book is divided into two main parts: Core JavaScript and Client-Side JavaScript. I like this approach. It sends the message that JavaScript is not just for the browser. However, there are several important nuances when using JavaScript in the browser that are covered thoroughly in the section on Client-Side JavaScript.

This book is nothing if not thorough. I can always find what I am looking for. Want to get an intro to Node or jQuery? It is in there. Want to find out about modules. It is in there. Hoping to understand closures better? It is in there. Or maybe you simply want to know the primitive values in JavaScript. It is all in there. From the simple to the complex, this book has something to say about each topic.

This book is probably not the most exciting book I have on JavaScript. Nor is it the most interesting to read. It is probably not the book that has expanded my thinking the most about JavaScript. But it is the book I always turn to. It is the only book I have purchased twice. I originally bought the 4th edition, and then a couple years back upgraded to the 6th edition.

If you don’t have this book, you may want to add it to your library or use it to start your JavaScript library: JavaScript: The Definitive Guide.