Understanding ECMAScript 6
Understanding ECMAScript 6
$24.99
Minimum price
$29.99
Suggested price
Understanding ECMAScript 6

This book is 100% complete

Completed on 2018-02-24

About the Book

ECMAScript 6 represents the biggest change to the core of JavaScript in the history of the language. Not only does the sixth edition add new object types, but also new syntax and exciting new capabilities. The result of years of study and debate, ECMAScript 6 reached feature complete status in 2014. While it will take a bit of time before all JavaScript environments support ECMAScript 6, it's still useful to understand what's coming and which features are available already.

This book is a guide for the transition between ECMAScript 5 and 6. It is not specific to any JavaScript environment, so it is equally useful to web developers as it is Node.js developers.

What you'll learn:

  • All of the changes to the language since ECMAScript 5
  • How the new class syntax relates to more familiar JavaScript concepts
  • Why iterators and generators are useful
  • How arrow functions are differ from regular functions
  • Additional options for storing data using sets, maps, and more
  • The power of inheriting from native types
  • Why people are so excited about promises for asynchronous programming
  • How modules will change the way you organize code

This book is being developed in the open on GitHub. You can visit the project repo to see the latest updates.

  • Share this book

  • License

Table of Contents

  • Introduction
    • The Road to ECMAScript 6
    • About This Book
    • Acknowledgments
  • Block Bindings
    • Var Declarations and Hoisting
    • Block-Level Declarations
    • Block Binding in Loops
    • Global Block Bindings
    • Emerging Best Practices for Block Bindings
    • Summary
  • Strings and Regular Expressions
    • Better Unicode Support
    • Other String Changes
    • Other Regular Expression Changes
    • Template Literals
    • Summary
  • Functions
    • Functions with Default Parameter Values
    • Working with Unnamed Parameters
    • Increased Capabilities of the Function Constructor
    • The Spread Operator
    • ECMAScript 6’s name Property
    • Clarifying the Dual Purpose of Functions
    • Block-Level Functions
    • Arrow Functions
    • Tail Call Optimization
    • Summary
  • Expanded Object Functionality
    • Object Categories
    • Object Literal Syntax Extensions
    • New Methods
    • Duplicate Object Literal Properties
    • Own Property Enumeration Order
    • More Powerful Prototypes
    • A Formal Method Definition
    • Summary
  • Destructuring for Easier Data Access
    • Why is Destructuring Useful?
    • Object Destructuring
    • Array Destructuring
    • Mixed Destructuring
    • Destructured Parameters
    • Summary
  • Symbols and Symbol Properties
    • Creating Symbols
    • Using Symbols
    • Sharing Symbols
    • Symbol Coercion
    • Retrieving Symbol Properties
    • Exposing Internal Operations with Well-Known Symbols
    • Summary
  • Sets and Maps
    • Sets and Maps in ECMAScript 5
    • Problems with Workarounds
    • Sets in ECMAScript 6
    • Maps in ECMAScript 6
    • Summary
  • Iterators and Generators
    • The Loop Problem
    • What are Iterators?
    • What Are Generators?
    • Iterables and for-of
    • Built-in Iterators
    • The Spread Operator and Non-Array Iterables
    • Advanced Iterator Functionality
    • Asynchronous Task Running
    • Summary
  • Introducing JavaScript Classes
    • Class-Like Structures in ECMAScript 5
    • Class Declarations
    • Class Expressions
    • Classes as First-Class Citizens
    • Accessor Properties
    • Computed Member Names
    • Generator Methods
    • Static Members
    • Inheritance with Derived Classes
    • Using new.target in Class Constructors
    • Summary
  • Improved Array Capabilities
    • Creating Arrays
    • New Methods on All Arrays
    • Typed Arrays
    • Similarities Between Typed and Regular Arrays
    • Differences Between Typed and Regular Arrays
    • Summary
  • Promises and Asynchronous Programming
    • Asynchronous Programming Background
    • Promise Basics
    • Global Promise Rejection Handling
    • Chaining Promises
    • Responding to Multiple Promises
    • Inheriting from Promises
    • Summary
  • Proxies and the Reflection API
    • The Array Problem
    • What are Proxies and Reflection?
    • Creating a Simple Proxy
    • Validating Properties Using the set Trap
    • Object Shape Validation Using the get Trap
    • Hiding Property Existence Using the has Trap
    • Preventing Property Deletion with the deleteProperty Trap
    • Prototype Proxy Traps
    • Object Extensibility Traps
    • Property Descriptor Traps
    • The ownKeys Trap
    • Function Proxies with the apply and construct Traps
    • Revocable Proxies
    • Solving the Array Problem
    • Using a Proxy as a Prototype
    • Summary
  • Encapsulating Code With Modules
    • What are Modules?
    • Basic Exporting
    • Basic Importing
    • Renaming Exports and Imports
    • Default Values in Modules
    • Re-exporting a Binding
    • Importing Without Bindings
    • Loading Modules
    • Summary
  • Appendix A: Smaller Changes
    • Working with Integers
    • New Math Methods
    • Unicode Identifiers
    • Formalizing the __proto__ Property
  • Appendix B: Understanding ECMAScript 7 (2016)
    • The Exponentiation Operator
    • The Array.prototype.includes() Method
    • Change to Function-Scoped Strict Mode

Bundles that include this book

Principles of Object-Oriented Programming in JavaScript
Understanding ECMAScript 6
2 Books
$49.98
Suggested Price
$29.99
Bundle Price
The Majesty of Vue.js 2
Understanding ECMAScript 6
2 Books
$61.89
Suggested Price
$39.99
Bundle Price
Exploring ES6
Understanding ECMAScript 6
2 Books
$64.99
Suggested Price
$39.99
Bundle Price

About the Author

Nicholas C. Zakas
Nicholas C. Zakas

Nicholas C. Zakas is a web applications software engineer with over 16 years of experiencing. He has worked on everything from small websites to massive-scale web applications. He has worked at Box as a principal architect and Yahoo as a presentation architect. He is the author of Maintainable JavaScript (O’Reilly, 2012), Professional JavaScript for Web Developers (Wrox, 2012), High Performance JavaScript(O’Reilly, 2010), and Professional Ajax (Wrox, 2007). Nicholas is a strong advocate for development best practices including progressive enhancement, accessibility, performance, scalability, and maintainability. He blogs regularly at https://www.nczonline.net/ and can be found on Twitter via @slicknet.

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors and publishers use Leanpub to publish amazing in-progress and completed ebooks, just like this one. You can use Leanpub to write, publish and sell your book as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub