JavaScript The Definitive Guide 7th Edition by David Flanagan