Most importantly, this edition is up-to-date and covers the very newest ES2020 features like
??. The sixth edition covered ES5, which means that I have added documentation of all the language features of ES6, ES2016, ES2017, ES2018, ES2019 and ES2020 for this update.
The first thing you’ll notice when you see the new edition is that O’Reilly has changed the cover. The old cover style still seems iconic to me, but this new style does seem like a nice modernization of the O’Reilly brand.
The second thing you’ll notice when you pick the book up is that it is significantly thinner. The 6th edition was a 1096 page brick; the 7th edition is about 400 pages slimmer: still a substantial book, but not absurdly so. The main reason for this reduced page count is that I’ve removed the reference section. In 2020 it is faster to look reference information up on MDN than it is to flip through a printed book. It simply doesn’t make sense to include that material in this new edition.
attachEvent(), and pretty much all mentions of Internet Explorer. There was a lot of material on CSS that I’ve removed, and the entire chapter on jQuery is gone (it is still available as a pocket reference though).
The 7th edition has a number of rewritten and new chapters:
Chapter 6, Objects, and Chapter 8, Functions, are not completely rewritten but they include a lot of new material covering all the ES6 extensions to object literal syntax, arrow functions, parameter defaults, rest parameters, the spread operator, and so on.
Chapter 12, Iterators and Generators is new, and documents exactly what the title says. This chapter teaches you how to use
Symbol.iteratorto make your own classes iterable so that they work with the
for/ofloop. And it also explains generator (defined with
function*) and the
Chapter 14, Metaprogramming is a grab-bag of advanced language features that may be of primary interest to those writing libraries for use by other programmers. It explains property descriptors, object extensibility, template tag functions, proxy objects, the Reflect API and well-known symbols.
history.pushState()and more. This chapter concludes with an extended example that implements a multi-threaded Mandelbrot set viewer app. The example demonstrates web workers (and includes a Promise-based WorkerPool utility class), inter-thread communication with
postMessage(), the transfer (without copying) of array buffers between threads, history management with
popstate(), keyboard and pointer events, scripted CSS transforms, the URL() class, and generators.
It is a really good book! You can order it here.