Categories
Bibliography JavaScript Software Engineering

JavaScript: The Definitive Guide, 7th Edition

See also: JavaScript Bibliography and Bibliography of JavaScript Libraries and Web Frameworks

Fair Use Source: B088P9Q6BB (JSDG7)

JavaScript: The Definitive Guide: Master the World’s Most-Used Programming Language 7th Edition, by David Flanagan

For web developers and other programmers interested in using JavaScript, this bestselling book provides the most comprehensive JavaScript material on the market. The seventh edition represents a significant update, with new information for ECMAScript 2020, and new chapters on language-specific features.

JavaScript: The Definitive Guide is ideal for experienced programmers who want to learn the programming language of the web, and for current JavaScript programmers who want to master it.

About This Book:

JavaScript is the programming language of the web. The overwhelming majority of websites use JavaScript, and all modern web browsers—on desktops, tablets, and phones—include JavaScript interpreters, making JavaScript the most-deployed programming language in history. Over the last decade, Node.js has enabled JavaScript programming outside of web browsers, and the dramatic success of Node means that JavaScript is now also the most-used programming language among software developers. Whether you’re starting from scratch or are already using JavaScript professionally, this book will help you master the language.

If you are already familiar with other programming languages, it may help you to know that JavaScript is a high-level, dynamic, interpreted programming language that is well-suited to object-oriented and functional programming styles. JavaScript’s variables are untyped. Its syntax is loosely based on Java, but the languages are otherwise unrelated.

JavaScript derives its first-class functions from Scheme and its prototype-based inheritance from the little-known language Self. But you do not need to know any of those languages, or be familiar with those terms, to use this book and learn JavaScript.

This book covers the JavaScript language and the JavaScript APIs implemented by web browsers and by Node. I wrote it for readers with some prior programming experience who want to learn JavaScript and also for programmers who already use JavaScript but want to take their understanding to a new level and really master the language. My goal with this book is to document the JavaScript language comprehensively and definitively and to provide an in-depth introduction to the most important client-side and server-side APIs available to JavaScript programs. As a result, this is a long and detailed book. My hope, however, is that it will reward careful study and that the time you spend reading it will be easily recouped in the form of higher programming productivity.

About the Author:

David Flanagan is a computer programmer who spends most of his time writing about JavaScript and Java. His books with O’Reilly include Java in a Nutshell, Java Examples in a Nutshell, Java Foundation Classes in a Nutshell, JavaScript: The Definitive Guide, and JavaScript Pocket Reference. David has a degree in computer science and engineering from the Massachusetts Institute of Technology. He lives with his wife and children in the U.S. Pacific Northwest between the cities of Seattle, Washington and Vancouver, British Columbia. David has a blog at www.davidflanagan.com.

Book Details:

  • ASIN: B088P9Q6BB
  • ISBN-10: 1491952024
  • ISBN-13: 978-1491952023
  • Publisher: O’Reilly Media; 7th edition (May 14, 2020)
  • Publication date: May 14, 2020
  • Print length: 708 pages

Table of Contents:

Preface

Conventions Used in This Book

Example Code

O’Reilly Online Learning

How to Contact Us

Acknowledgments

Introduction to JavaScript

1.1 Exploring JavaScript

1.2 JavaScript Hello World

1.3 A Tour of JavaScript

1.4 Example: JavaScript Character Frequency Histograms

1.5 JavaScript Introduction Summary

Chapter 2 – JavaScript Lexical Structure

2.1 The Text of a JavaScript Program

2.2 JavaScript Comments

2.3 JavaScript Literals

2.4 JavaScript Identifiers and JavaScript Reserved Words

2.4.1 JavaScript Reserved Words

2.5 JavaScript Unicode

2.5.1 JavaScript Unicode Escape Sequences

2.5.2 JavaScript Unicode Normalization

2.6 JavaScript Optional Semicolons

2.7 JavaScript Lexical Structure Summary

Chapter 3 – JavaScript Types, Values, and Variables

3.1 Overview and Definitions of JavaScript Types, Values and Variables

3.2 JavaScript Numbers

3.2.1 JavaScript Integer Literals

3.2.2 JavaScript Floating-Point Literals

3.2.3 JavaScript Arithmetic

3.2.4 JavaScript Binary Floating-Point and JavaScript Rounding Errors

3.2.5 JavaScript Arbitrary Precision Integers with JavaScript BigInt

3.2.6 JavaScript Dates and JavaScript Times

3.3 JavaScript Text

3.3.1 JavaScript String Literals

3.3.2 JavaScript Escape Sequences in JavaScript String Literals

3.3.3 Working with JavaScript Strings

3.3.4 JavaScript Template Literals

3.3.5 JavaScript Pattern Matching

3.4 JavaScript Boolean Values

3.5 JavaScript null and JavaScript undefined

3.6 JavaScript Symbols

3.7 The JavaScript Global Object

3.8 JavaScript Immutable Primitive Values and JavaScript Mutable Object References

3.9 JavaScript Type Conversions

3.9.1 JavaScript Conversions and JavaScript Equality

3.9.2 JavaScript Explicit Conversions

3.9.3 JavaScript Object to Primitive Conversions

3.10 JavaScript Variable Declaration and JavaScript Variable Assignment

3.10.1 JavaScript Variable Declarations with let and JavaScript Variable Declarations with const

3.10.2 JavaScript Variable Declarations with var

3.10.3 JavaScript Destructuring Assignment

3.11 Summary of Overview and Definitions of JavaScript Types, Values and Variables

Chapter 4 – JavaScript Expressions and JavaScript Operators

4.1 JavaScript Primary Expressions

4.2 JavaScript Object Initializers and JavaScript Array Initializers

JavaScript Object Initializers (JavaScript Object Literals)

JavaScript Array Initializers (JavaScript Array Literals)

4.3 JavaScript Function Definition Expressions

4.4 JavaScript Property Access Expressions

4.4.1 JavaScript Conditional Property Access

4.5 JavaScript Invocation Expressions

4.5.1 JavaScript Conditional Invocation

4.6 JavaScript Object Creation Expressions

4.7 JavaScript Operator Overview

4.7.1 Number of JavaScript Operands (JavaScript arity)

4.7.2 JavaScript Operand and JavaScript Result Type

4.7.3 JavaScript Operator Side Effects

4.7.4 JavaScript Operator Precedence

4.7.5 JavaScript Operator Associativity

4.7.6 JavaScript Order of Evaluation

4.8 JavaScript Arithmetic Expressions

4.8.1 The JavaScript + Operator

4.8.2 JavaScript Unary Arithmetic Operators

4.8.3 JavaScript Bitwise Operators

4.9 JavaScript Relational Expressions

4.9.1 JavaScript Equality Operators and JavaScript Inequality Operators

JavaScript Strict Equality Operator

JavaScript Equality with JavaScript Type Conversion

4.9.2 JavaScript Comparison Operators

4.9.3 The JavaScript in Operator

4.9.4 The JavaScript instanceof Operator

4.10 JavaScript Logical Expressions

4.10.1 JavaScript Logical AND (&&)

4.10.2 JavaScript Logical OR (||)

4.10.3 JavaScript Logical NOT (!)

4.11 JavaScript Assignment Expressions

4.11.1 JavaScript Assignment with Operation

4.12 JavaScript Evaluation Expressions

4.12.1 JavaScript eval() Expression

4.12.2 JavaScript Global eval() Expression

4.12.3 JavaScript Strict eval() Expression

4.13 Miscellaneous JavaScript Operators

4.13.1 The JavaScript Conditional Operator (?:)

4.13.2 JavaScript First-Defined (??) Operator

4.13.3 The JavaScript typeof Operator

4.13.4 The JavaScript delete Operator

4.13.5 The JavaScript await Operator

4.13.6 The JavaScript void Operator

4.13.7 The JavaScript comma Operator (,)

4.14 Summary of JavaScript Expressions and JavaScript Operators

JavaScript Statements

5.1 JavaScript Expression Statements

5.2 JavaScript Compound Statements and JavaScript Empty Statements

5.3 JavaScript Conditional Statements

5.3.1 JavaScript if Statement

5.3.2 JavaScript else if Statement

5.3.3 JavaScript switch Statement

5.4 JavaScript Loop Statements

5.4.1 JavaScript while Statement

5.4.2 JavaScript do/while Statement

5.4.3 JavaScript for Statement

5.4.4 JavaScript for/of Statement

JavaScript for/of Statement with JavaScript objects

JavaScript for/of Statement with JavaScript strings

JavaScript for/of Statement with JavaScript Set

JavaScript for/of Statement with JavaScript Map

JavaScript Asynchronous Iteration (JavaScript Asynchronous Iterator) with JavaScript for/await Statement

5.4.5 JavaScript for/in Statement

5.5 JavaScript Jump Statements

5.5.1 JavaScript Labeled Statements

5.5.2 JavaScript break Statement

5.5.3 JavaScript continue Statement

5.5.4 JavaScript return Statement

5.5.5 JavaScript yield Statement (yield Operator) for Generator Functions

5.5.6 JavaScript throw Statement

5.5.7 JavaScript try/catch/finally Statement

5.6 Miscellaneous JavaScript Statements

5.6.1 JavaScript with Statement

5.6.2 JavaScript debugger Statement

5.6.3 JavaScript “use strict” Statement

5.7 JavaScript Declarations

5.7.1 JavaScript const Declaration, JavaScript let Declaration, and JavaScript var Declaration

5.7.2 JavaScript function Declaration

5.7.3 JavaScript class Declaration

5.7.4 JavaScript import Declaration and JavaScript export Declaration

5.8 Summary of JavaScript Statements

JavaScript Objects – Objected-Oriented JavaScript

6.1 Introduction to JavaScript Objects

6.2 Creating JavaScript Objects

6.2.1 JavaScript Object Literals

6.2.2 Creating JavaScript Objects with JavaScript new Operator

6.2.3 JavaScript Prototypes

6.2.4 JavaScript Object.create()

6.3 Querying JavaScript Object Properties and Setting JavaScript Object Properties

6.3.1 JavaScript Objects as JavaScript Associative Arrays (or in other languages Hash or Map or Dictionary)

6.3.2 JavaScript Inheritance

6.3.3 JavaScript Object Property Access Errors

6.4 Deleting JavaScript Object Properties

6.5 Testing JavaScript Object Properties

6.6 Enumerating JavaScript Object Properties

6.6.1 JavaScript Object Property Enumeration Order

6.7 Extending JavaScript Objects

6.8 Serializing JavaScript Objects – JSON.stringify() to Serialize and JSON.parse() to Restore

6.9 JavaScript Object Methods

6.9.1 The JavaScript toString() Method

6.9.2 The JavaScript toLocaleString() Method

6.9.3 The JavaScript valueOf() Method

6.9.4 The JavaScript toJSON() Method

6.10 Extended JavaScript Object Literal Syntax

6.10.1 Shorthand JavaScript Object Properties

6.10.2 JavaScript Computed Object Property Names

6.10.3 JavaScript Symbols as JavaScript Object Property Names

6.10.4 JavaScript Spread “Operator” to Copy Properties of an Existing Object into a New Object inside an Object Literal

6.10.5 Shortcut-Shorthand of JavaScript Methods

6.10.6 JavaScript Object Property Getters and JavaScript Object Property Setters – JavaScript Accessor Properties

6.11 Summary of JavaScript Objects – Objected-Oriented JavaScript

JavaScript Arrays

7.1 Creating JavaScript Arrays

7.1.1 JavaScript Array Literals

7.1.2 The JavaScript Spread Operator

7.1.3 The JavaScript Array() Constructor

7.1.4 JavaScript Array.of() Function – Factory Method

7.1.5 JavaScript Array.from() Function – Factory Method

7.2 Reading and Writing JavaScript Array Elements

7.3 JavaScript Sparse Arrays

7.4 JavaScript Array Length Property

7.5 Adding and Deleting JavaScript Array Elements

7.6 Iterating JavaScript Arrays

7.7 JavaScript Array of Arrays – There are No True JavaScript Multidimensional Arrays

7.8 JavaScript Array Methods

7.8.1 JavaScript Array Iterator Methods

JavaScript forEach() as a JavaScript Array Iterator Method

JavaScript map() as a JavaScript Array Iterator Method

JavaScript filter() as a JavaScript Array Iterator Method

JavaScript find() and JavaScript findIndex() as a JavaScript Array Iterator Method

JavaScript reduce() and JavaScript reduceRight() as a JavaScript Array Iterator Method

7.8.2 JavaScript flat() for Flattening JavaScript arrays and JavaScript flatMap() for Flattening JavaScript arrays

7.8.3 Adding JavaScript arrays with JavaScript concat()

7.8.4

JavaScript Arrays as if they were JavaScript Stacks with JavaScript push() and JavaScript pop()

JavaScript Arrays as if they were JavaScript Queues with JavaScript push() to Add and JavaScript shift() to Remove

JavaScript Array.prototype.push(), JavaScript Array.prototype.pop(), JavaScript Array.prototype.shift(), and JavaScript Array.prototype.unshift()

7.8.5 JavaScript Subarrays with slice(), splice(), fill(), and copyWithin()

7.8.6 JavaScript Array Searching Methods indexOf(), lastIndexOf(), and includes()

JavaScript Array Sorting Methods sort() and reverse()

7.8.7 JavaScript Array to JavaScript String Conversions

7.8.8 JavaScript Static Array Functions

7.9 JavaScript Array-Like Objects

7.10 JavaScript Strings as JavaScript Arrays

7.11 Summary of JavaScript Arrays

JavaScript Functions

8.1 Defining JavaScript Functions

8.1.1 JavaScript Function Declarations

8.1.2 JavaScript Function Expressions

8.1.3 JavaScript Arrow Functions

8.1.4 JavaScript Nested Functions

8.2 Invoking JavaScript Functions

8.2.1 JavaScript Function Invocation

JavaScript Recursive Functions and The Call Stack

8.2.2 JavaScript Method Invocation

JavaScript Method Chaining

8.2.3 JavaScript Constructor Invocation

8.2.4 Indirect JavaScript Function Invocation

8.2.5 Implicit JavaScript Function Invocation

8.3 JavaScript Function Arguments and JavaScript Function Parameters

8.3.1 Optional JavaScript Parameters and JavaScript Function Parameter Defaults

8.3.2 JavaScript Rest Parameters and JavaScript Variable-Length Argument Lists

8.3.3 The JavaScript Arguments Object

8.3.4 The JavaScript Spread Operator for JavaScript Function Calls

8.3.5 Destructuring JavaScript Function Arguments into JavaScript Function Parameters

8.3.6 JavaScript Function Argument Types

8.4 JavaScript Functions as Values

8.4.1 Defining Your Own JavaScript Function Properties

8.5 JavaScript Functions as Namespaces

8.6 JavaScript Closures

8.7 JavaScript Function Properties, JavaScript Methods, and JavaScript Constructors

8.7.1 The JavaScript length Property

8.7.2 The JavaScript name Property

8.7.3 The JavaScript prototype Property

8.7.4 The JavaScript call() Method and JavaScript apply() Method

8.7.5 The JavaScript bind() Method

8.7.6 The JavaScript toString() Method

8.7.7 The JavaScript Function() Constructor

8.8 JavaScript Functional Programming

8.8.1 Processing JavaScript Arrays with Functions

8.8.2 JavaScript Higher-Order Functions

8.8.3 Partial Application of JavaScript Functions

8.8.4 JavaScript Memoization – see also Memoization

8.9 Summary of JavaScript Functions

JavaScript Classes

9.1 JavaScript Classes and JavaScript Prototypes

9.2 JavaScript Classes and JavaScript Class Constructors

9.2.1 JavaScript Class Constructors, JavaScript Class Identity, and JavaScript instanceof

9.2.2 The JavaScript constructor Property

9.3 JavaScript Classes with the JavaScript class Keyword

9.3.1 JavaScript Static Methods

9.3.2 JavaScript Getters, JavaScript Setters, and other JavaScript Method Forms

9.3.3 JavaScript Public Fields, JavaScript Private Fields, and JavaScript Static Fields

9.3.4 Example: A JavaScript Complex Number Class

9.4 Adding JavaScript Methods to Existing JavaScript Classes

9.5 JavaScript Subclasses

9.5.1 JavaScript Subclasses and JavaScript Prototypes

9.5.2 JavaScript Subclasses with JavaScript extends and JavaScript super

9.5.3 JavaScript Delegation Instead of JavaScript Inheritance

9.5.4 JavaScript Class Hierarchies and JavaScript Abstract Classes

9.6 Summary of JavaScript Classes and JavaScript Prototypes

JavaScript Modules

10.1 JavaScript Modules with JavaScript Classes, JavaScript Objects, and JavaScript Closures

10.1.1 Automating JavaScript Closure-Based Modularity

10.2 JavaScript Modules in Node

10.2.1 Node Exports

10.2.2 Node Imports

10.2.3 Node-Style Modules on the Web

10.3 JavaScript Modules in ES6

10.3.1 ES6 JavaScript Exports

10.3.2 ES6 JavaScript Imports

10.3.3 JavaScript Imports and JavaScript Exports with Renaming

10.3.4 JavaScript Re-Exports

10.3.5 JavaScript Modules on the Web

10.3.6 Dynamic JavaScript Imports with JavaScript import()

10.3.7 JavaScript import.meta.url

10.4 Summary of JavaScript Modules with JavaScript Classes, JavaScript Objects, and JavaScript Closures

The JavaScript Standard Library

11.1 JavaScript Sets and JavaScript Maps

11.1.1 The JavaScript Set Class

11.1.2 The JavaScript Map Class

11.1.3 JavaScript WeakMap and JavaScript WeakSet

11.2 JavaScript Typed Arrays and JavaScript Binary Data

11.2.1 JavaScript Typed Array Types

11.2.2 Creating JavaScript Typed Arrays

11.2.3 Using JavaScript Typed Arrays

11.2.4 JavaScript Typed Array Methods and JavaScript Typed Array Properties

11.2.5 JavaScript DataView and JavaScript Endianness

11.3 JavaScript Pattern Matching with JavaScript Regular Expressions (RegExp)

11.3.1 Defining JavaScript Regular Expressions (RegExp)

11.3.2 JavaScript String Methods for JavaScript Pattern Matching

11.3.3 The JavaScript RegExp Class

11.4 JavaScript Dates and JavaScript Times

11.4.1 JavaScript Timestamps

JavaScript High-Resolution Timestamps

11.4.2 JavaScript Date Arithmetic

11.4.3 Formatting and Parsing JavaScript Date Strings

11.5 JavaScript Error Classes

11.6 JavaScript JSON Serialization and JavaScript JSON Parsing

JSON is a Subset of JavaScript

11.6.1 JavaScript JSON Customizations

11.7 The JavaScript Internationalization API

11.7.1 Formatting JavaScript Numbers with Internationalization API

11.7.2 Formatting JavaScript Dates and JavaScript Times with Internationalization API

11.7.3 Comparing JavaScript Strings with Internationalization API

11.8 The JavaScript Console API

11.8.1 Formatted Output with JavaScript Console

11.9 JavaScript URL APIs

11.9.1 JavaScript Legacy URL Functions

11.10 JavaScript Timers and Timing Events

11.11 Summary of JavaScript Standard Library

JavaScript Iterators and JavaScript Generators

12.1 How JavaScript Iterators Work

12.2 Implementing JavaScript Iterable Objects

12.2.1 “Closing” a JavaScript Iterator: The JavaScript Return Method

12.3 JavaScript Generators

12.3.1 JavaScript Generator Examples

12.3.2 JavaScript yield* and JavaScript Recursive Generators

12.4 Advanced JavaScript Generator Features

12.4.1 The JavaScript Return Value of a JavaScript Generator Function

12.4.2 The Value of a JavaScript yield Expression

12.4.3 The JavaScript return() and JavaScript throw() Methods of a JavaScript Generator

12.4.4 A Final Note About JavaScript Generators

12.5 Summary of JavaScript Iterators and Generators

Asynchronous JavaScript

13.1 Asynchronous Programming with JavaScript Callbacks

13.1.1 JavaScript Timers with Asynchronous JavaScript

13.1.2 JavaScript Events with Asynchronous JavaScript

13.1.3 JavaScript Network Events with Asynchronous JavaScript

13.1.4 JavaScript Callbacks and JavaScript Events in Node.js

13.2 JavaScript Promises – Asynchronous JavaScript

13.2.1 Using JavaScript Promises – Asynchronous JavaScript

Handling JavaScript Errors with JavaScript Promises – Asynchronous JavaScript

JavaScript Promises Terminology – Asynchronous JavaScript

13.2.2 Chaining JavaScript Promises – Asynchronous JavaScript

13.2.3 Resolving JavaScript Promises – Asynchronous JavaScript

13.2.4 More on JavaScript Promises and JavaScript Errors – Asynchronous JavaScript

13.2.5 JavaScript Promises in Parallel – Asynchronous JavaScript

13.2.6 Making JavaScript Promises – Asynchronous JavaScript

13.2.7 JavaScript Promises in Sequence – Asynchronous JavaScript

13.3 JavaScript async and JavaScript await – Asynchronous JavaScript

13.3.1 JavaScript await Expressions – Asynchronous JavaScript

13.3.2 JavaScript async Functions – Asynchronous JavaScript

13.3.3 Awaiting Multiple JavaScript Promises – Asynchronous JavaScript

13.3.4 JavaScript Async Implementation Details – Asynchronous JavaScript

13.4 JavaScript Asynchronous Iteration – Asynchronous JavaScript

13.4.1 The JavaScript for/await Loop for JavaScript Asynchronous Iteration – Async JavaScript

13.4.2 JavaScript Asynchronous Iterators – Async JavaScript

13.4.3 JavaScript Asynchronous Generators – Async JavaScript

13.4.4 Implementing JavaScript Asynchronous Iterators – Async JavaScript

13.5 Summary of Asynchronous JavaScript

JavaScript Metaprogramming

14.1 JavaScript Object Property Attributes

14.2 JavaScript Object Extensibility

14.3 The JavaScript prototype Attribute

14.4 Well-Known JavaScript Symbols

14.4.1 JavaScript Symbol.iterator and JavaScript Symbol.asyncIterator

14.4.2 JavaScript Symbol.hasInstance

14.4.3 JavaScript Symbol.toStringTag

14.4.4 JavaScript Symbol.species

14.4.5 JavaScript Symbol.isConcatSpreadable

14.4.6 JavaScript Pattern-Matching Symbols

14.4.7 JavaScript Symbol.toPrimitive

14.4.8 JavaScript Symbol.unscopables

14.5 JavaScript Template Tags – JavaScript Tagged Template Literals

14.6 The JavaScript Reflect API

14.7 JavaScript Proxy Objects

14.7.1 JavaScript Proxy Invariants

14.8 Summary of JavaScript Metaprogramming

JavaScript in Web Browsers

15.1 JavaScript Web Programming Basics

15.1.1 JavaScript in HTML script Tags

  • JavaScript Modules in HTML script Tags
  • Specifying script type in HTML script Tags
  • When scripts run: async and deferred in HTML script Tags

15.1.2 The Document Object Model (DOM)

15.1.3 The JavaScript Global Object in Web Browsers

15.1.4 JavaScript Scripts Share a JavaScript Namespace

15.1.5 Execution of JavaScript Programs in a Web Browser

15.1.6 JavaScript Program Input and Output in a Web Browser

15.1.7 JavaScript Program Errors in a Web Browser

15.1.8 The Web Security Model in a Web Browser

15.2 JavaScript Events in a Web Browser

15.2.1 JavaScript Event Categories in a Web Browser

15.2.2 Registering JavaScript Event Handlers in a Web Browser

15.2.3 JavaScript Event Handler Invocation in a Web Browser

15.2.4 JavaScript Event Propagation in a Web Browser

15.2.5 JavaScript Event Cancellation in a Web Browser

15.2.6 Dispatching JavaScript Custom Events in a Web Browser

15.3 Scripting Documents in a Web Browser

15.3.1 Selecting Document Elements in a Web Browser

15.3.2 Document Structure and Traversal in a Web Browser

15.3.3 Attributes in a Web Browser

15.3.4 Element Content in a Web Browser

15.3.5 Creating, Inserting, and Deleting Nodes in a Web Browser

15.3.6 Example: Generating a Table of Contents in a Web Browser

15.4 Scripting CSS

15.4.1 CSS Classes

15.4.2 Inline Styles

15.4.3 Computed Styles

15.4.4 Scripting Stylesheets

15.4.5 CSS Animations and Events

15.5 Document Geometry and Scrolling

15.5.1 Document Coordinates and Viewport Coordinates

15.5.2 Querying the Geometry of an Element

15.5.3 Determining the Element at a Point

15.5.4 Scrolling

15.5.5 Viewport Size, Content Size, and Scroll Position

15.6 Web Components

15.6.1 Using Web Components

15.6.2 HTML Templates

15.6.3 Custom Elements

15.6.4 Shadow DOM

15.6.5 Example: a Web Component

15.7 SVG: Scalable Vector Graphics

15.7.1 SVG in HTML

15.7.2 Scripting SVG

15.7.3 Creating SVG Images with JavaScript

15.8 Graphics in a

15.8.2 Canvas Dimensions and Coordinates

15.8.3 Graphics Attributes

15.8.4 Canvas Drawing Operations

15.8.5 Coordinate System Transforms

15.8.6 Clipping

15.8.7 Pixel Manipulation

15.9 Audio APIs

15.9.1 The Audio() Constructor

15.9.2 The WebAudio API

15.10 Location, Navigation, and History

15.10.1 Loading New Documents

15.10.2 Browsing History

15.10.3 History Management with hashchange Events

15.10.4 History Management with pushState()

15.11 Networking 15.11.1 fetch()

15.11.2 Server-Sent Events

15.11.3 WebSockets

15.12 Storage

15.12.1 localStorage and sessionStorage

15.12.2 JavaScript Cookies

15.12.3 IndexedDB

15.13 Worker Threads and Messaging

15.13.1 Worker Objects

15.13.2 The Global Object in Workers

15.13.3 Importing Code into a Worker

15.13.4 Worker Execution Model

15.13.5 postMessage(), MessagePorts, and MessageChannels

15.13.6 Cross-Origin Messaging with postMessage()

15.14 Example: The Mandelbrot Set

15.15 Summary and Suggestions for Further Reading

15.15.1 HTML and CSS

15.15.2 Performance

15.15.3 Security

15.15.4 WebAssembly

15.15.5 More Document and Window Features

15.15.6 Events

15.15.7 Progressive Web Apps and Service Workers

15.15.8 Mobile Device APIs

15.15.9 Binary APIs

15.15.10 Media APIs

15.15.11 Cryptography and Related APIs

Server-Side JavaScript with Node

16.1 Node Programming Basics 16.1.1 Console Output

16.1.2 Command-Line Arguments and Environment Variables

16.1.3 Program Life Cycle

16.1.4 Node Modules

16.1.5 The Node Package Manager

16.2 Node Is Asynchronous by Default

16.3 Buffers

16.4 Events and EventEmitter

16.5 Streams 16.5.1 Pipes

16.5.2 Asynchronous Iteration

16.5.3 Writing to Streams and Handling Backpressure

16.5.4 Reading Streams with Events

16.6 Process, CPU, and Operating System Details

16.7 Working with Files 16.7.1 Paths, File Descriptors, and FileHandles

16.7.2 Reading Files

16.7.3 Writing Files

16.7.4 File Operations

16.7.5 File Metadata

16.7.6 Working with Directories

16.8 HTTP Clients and Servers

16.9 Non-HTTP Network Servers and Clients

16.10 Working with Child Processes 16.10.1 execSync() and execFileSync()

16.10.2 exec() and execFile()

16.10.3 spawn()

16.10.4 fork()

16.11 Worker Threads 16.11.1 Creating Workers and Passing Messages

16.11.2 The Worker Execution Environment

16.11.3 Communication Channels and MessagePorts

16.11.4 Transferring MessagePorts and Typed Arrays

16.11.5 Sharing Typed Arrays Between Threads

16.12 Summary

JavaScript Tools and Extensions

17.1 Linting with ESLint

17.2 JavaScript Formatting with Prettier

17.3 Unit Testing with Jest

17.4 Package Management with npm

17.5 Code Bundling

17.6 Transpilation with Babel

17.7 JSX: Markup Expressions in JavaScript

17.8 Type Checking with Flow 17.8.1 Installing and Running Flow

17.8.2 Using Type Annotations

17.8.3 Class Types

17.8.4 Object Types

17.8.5 Type Aliases

17.8.6 Array Types

17.8.7 Other Parameterized Types

17.8.8 Read-Only Types

17.8.9 Function Types

17.8.10 Union Types

17.8.11 Enumerated Types and Discriminated Unions

17.9 Summary

Index

Sources:

Fair Use Sources: