Author(s): Ilya Kantor
Year: 2019
Language: English
Pages: 697
An Introduction to JavaScript......Page 5
Manuals and specifications......Page 8
Code editors......Page 9
Developer console......Page 10
Hello, world!......Page 13
Code structure......Page 16
The modern mode, "use strict"......Page 20
Variables......Page 22
Numbers......Page 30
Type Conversions......Page 35
Operators......Page 39
Comparisons......Page 49
Interaction: alert, prompt, confirm......Page 54
Conditional operators: if, '?'......Page 56
Logical operators......Page 63
Loops: while and for......Page 71
The "switch" statement......Page 81
Functions......Page 85
Function expressions......Page 96
Arrow functions, the basics......Page 103
JavaScript specials......Page 105
Debugging in Chrome......Page 111
Coding Style......Page 117
Comments......Page 18
Ninja code......Page 128
Automated testing with Mocha......Page 133
Polyfills......Page 145
Objects......Page 146
Garbage collection......Page 163
Symbol type......Page 170
Object methods, "this"......Page 176
Object to primitive conversion......Page 185
Constructor, operator "new"......Page 191
Methods of primitives......Page 196
BigInt......Page 31
Arrays......Page 226
Array methods......Page 238
Iterables......Page 257
Map and Set......Page 263
WeakMap and WeakSet......Page 271
Object.keys, values, entries......Page 277
Destructuring assignment......Page 280
Date and time......Page 292
JSON methods, toJSON......Page 303
Recursion and stack......Page 314
Rest parameters and spread operator......Page 327
Closure......Page 332
The old "var"......Page 350
Global object......Page 353
Function object, NFE......Page 355
The "new Function" syntax......Page 362
Scheduling: setTimeout and setInterval......Page 365
Decorators and forwarding, call/apply......Page 373
Function binding......Page 384
Arrow functions revisited......Page 392
Property flags and descriptors......Page 394
Property getters and setters......Page 401
Prototypal inheritance......Page 405
F.prototype......Page 415
Native prototypes......Page 420
Prototype methods, objects without __proto__......Page 426
Class basic syntax......Page 432
Class inheritance......Page 439
Static properties and methods......Page 451
Private and protected properties and methods......Page 456
Extending built-in classes......Page 463
Class checking: "instanceof"......Page 465
Mixins......Page 470
Error handling, "try..catch"......Page 474
Custom errors, extending Error......Page 488
Introduction: callbacks......Page 495
Promise......Page 501
Promises chaining......Page 509
Error handling with promises......Page 517
Promise API......Page 521
Promisification......Page 527
Microtasks......Page 529
Async/await......Page 531
Generators......Page 539
Async iterators and generators......Page 549
Modules, introduction......Page 556
Export and Import......Page 564
Dynamic imports......Page 573
Proxy and Reflect......Page 575
Eval: run a code string......Page 596
Currying......Page 599