Last Decade vs. Today
Back then, debugging was all but non-existent. Many of us remember a time where debugging consisted of running the page in a browser and looking for the yellow triangle in the corner. That told us "something didn't work" -- and that was it.
The Good Parts
Another part that I found useful was how objects are managed. Object literals give us a way to create object values. In addition, prototyping gives us a pseudo-inheritance model that let's us create and update values in a single location that can affect multiple objects.
The biggest thing that I took away from this book is the dynamic nature of the language. Values can be added or updated at any time. If you ask for a value that doesn't exist, then you simply get an "undefined" back -- there are no errors for asking for something that's not there.
The Bad Parts
Douglas Crockford talks about several bad parts (in fact, there are appendices dedicated to "The Bad Parts" and "The Awful Parts"). These include things like global variables, scope, semicolon insertion, "falsy" values, and several others.