What this book covers
Chapter 1, Object-Oriented JavaScript, talks briefly about the history, present, and future of JavaScript, and then moves on to explore the basics of object-oriented programming (OOP) in general. You will then learn how to set up your training environment (Firebug) in order to dive into the language on your own, using the book examples as a base.
Chapter 2, Primitive Data Types, Arrays, Loops, and Conditions, discusses the language basics-variables, data types, primitive data types, arrays, loops, and conditionals.
Chapter 3, Functions, covers functions that JavaScript uses, and here you will learn to master them all. You will also learn about the scope of variables and JavaScript's built-in functions. An interesting, but often misunderstood, feature of the language-closures-is demystified at the end of the chapter.
Chapter 4, Objects, talks about objects, how to work with properties and methods, and the various ways to create your objects. This chapter also talks about built-in objects such as Array, Function, Boolean, Number, and String.
Chapter 5, ES6 Iterators and Generators, introduces the most anticipated features of ES6, Iterators and Generators. With this knowledge, you will proceed to take a detailed look at the enhanced collections constructs.
Chapter 6, Prototype, is dedicated to the all-important concept of prototypes in JavaScript. It also explains how the prototype chain works, hasOwnProperty(), and some gotchas of prototypes.
Chapter 7, Inheritance, discusses how inheritance works. This chapter also talks about a method to create subclasses like other classic languages.
Chapter 8, Classes and Modules, shows that ES6 introduces important syntactical features that makes it easier to write classical object-oriented programming constructs. ES6 class syntax wraps the slightly complex syntax of ES5. ES6 also has full language support for modules. This chapter goes into the details of the classes and module constructs introduced in ES6.
Chapter 9, Promises and Proxies, explains that JavaScript has always been a language with strong support for asynchronous programming. Up until ES5, writing asynchronous programs meant you needed to rely on callbacks-sometimes resulting in callback hell. ES6 promises are a much-awaited feature introduced in the language. Promises provide a much cleaner way to write asynchronous programs in ES6. Proxies are used to define custom behavior to some of the fundamental operations. This chapter looks at practical uses of both promises and proxies in ES6.
Chapter 10, The Browser Environment, is dedicated to browsers. This chapter also covers BOM (Browser Object Model), DOM (W3C's Document Object Model), browser events, and AJAX.
Chapter 11, Coding and Design Patterns, dives into various unique JavaScript coding patterns, as well as several language-independent design patterns, translated to JavaScript from the Book of Four, the most influential work of software design patterns. This chapter also discusses JSON.
Chapter 12, Testing and Debugging, talks about how Modern JavaScript is equipped with tools that support Test Driven Development and Behavior Driven Development. Jasmine is one of the most popular tools available at the moment. This chapter discusses TDD and BDD using Jasmine as the framework.
Chapter 13, Reactive Programming and React, explains that with the advent of ES6, several radical ideas are taking shape. Reactive programming takes a very different approach to how we manage change of states using data flows. React, however, is a framework focusing on the View part of MVC. This chapter discusses these two ideas.
Appendix A, Reserved Words, lists the reserved words in JavaScript.
Appendix B, Built-in Functions, is a reference of built-in JavaScript functions together with sample uses.
Appendix C, Built-in Objects, is a reference that provides details and examples of the use of every method and property of every built-in object in JavaScript.
Appendix D, Regular Expressions, is a regular expressions pattern reference.
Appendix E, Answers to Exercise Questions, has solutions for all the exercises mentioned at the end of the chapters.