EPUB/PDF
The Modern JavaScript Tutorial
How it's done now. From the basics to advanced topics with simple, but detailed explanations.
13th August 2020
10642 ★github
Share:
Search in the tutorial
SEARCH
Table of contents
Main course contains 2 parts which cover JavaScript as a programming language and working with a browser. There are also additional series of thematic articles.
PART 1
The JavaScript language
Here we learn JavaScript, starting from scratch and go on to advanced concepts like OOP.
We concentrate on the language itself here, with the minimum of environment-specific notes.
An introduction
An Introduction to JavaScript
Manuals and specifications
Code editors
Developer console
JavaScript Fundamentals
Hello, world!
Code structure
The modern mode, "use strict"
Variables
Data types
Interaction: alert, prompt, confirm
More…
Code quality
Debugging in Chrome
Coding Style
Comments
Ninja code
Automated testing with Mocha
Polyfills
Objects: the basics
Objects
Object copying, references
Garbage collection
Object methods, "this"
Constructor, operator "new"
Optional chaining '?.'
Symbol type
Object to primitive conversion
Data types
Methods of primitives
Numbers
Strings
Arrays
Array methods
Iterables
More…
Advanced working with functions
Recursion and stack
Rest parameters and spread syntax
Variable scope, closure
The old "var"
Global object
Function object, NFE
More…
Object properties configuration
Property flags and descriptors
Property getters and setters
Prototypes, inheritance
Prototypal inheritance
F.prototype
Native prototypes
Prototype methods, objects without proto
Classes
Class basic syntax
Class inheritance
Static properties and methods
Private and protected properties and methods
Extending built-in classes
Class checking: "instanceof"
Mixins
Error handling
Error handling, "try..catch"
Custom errors, extending Error
Promises, async/await
Introduction: callbacks
Promise
Promises chaining
Error handling with promises
Promise API
Promisification
Microtasks
Async/await
Generators, advanced iteration
Generators
Async iterators and generators
Modules
Modules, introduction
Export and Import
Dynamic imports
Miscellaneous
Proxy and Reflect
Eval: run a code string
Currying
Reference Type
BigInt
PART 2
Browser: Document, Events, Interfaces
Learning how to manage the browser page: add elements, manipulate their size and position, dynamically create interfaces and interact with the visitor.
Document
Browser environment, specs
DOM tree
Walking the DOM
Searching: getElement, querySelector
Node properties: type, tag and contents
Attributes and properties
More…
Introduction to Events
Introduction to browser events
Bubbling and capturing
Event delegation
Browser default actions
Dispatching custom events
UI Events
Mouse events
Moving the mouse: mouseover/out, mouseenter/leave
Drag'n'Drop with mouse events
Pointer events
Keyboard: keydown and keyup
Scrolling
Forms, controls
Form properties and methods
Focusing: focus/blur
Events: change, input, cut, copy, paste
Forms: event and method submit
Document and resource loading
Page: DOMContentLoaded, load, beforeunload, unload
Scripts: async, defer
Resource loading: onload and onerror
Miscellaneous
Mutation observer
Selection and Range
Event loop: microtasks and macrotasks
PART 3
Additional articles
List of extra topics that assume you've covered the first two parts of tutorial. There is no clear hierarchy here, you can read articles in the order you want.
Frames and windows
Popups and window methods
Cross-window communication
The clickjacking attack
Binary data, files
ArrayBuffer, binary arrays
TextDecoder and TextEncoder
Blob
File and FileReader
Network requests
Fetch
FormData
Fetch: Download progress
Fetch: Abort
Fetch: Cross-Origin Requests
Fetch API
More…
Storing data in the browser
Cookies, document.cookie
LocalStorage, sessionStorage
IndexedDB
Animation
Bezier curve
CSS-animations
JavaScript animations
Web components
From the orbital height
Custom elements
Shadow DOM
Template element
Shadow DOM slots, composition
Shadow DOM styling
Shadow DOM and events
Regular expressions
Patterns and flags
Character classes
Unicode: flag "u" and class \p{...}
Anchors: string start ^ and end $
Multiline mode of anchors ^ $, flag "m"
Word boundary: \b
More…
Share
Tutorial map
Comments
If you have suggestions what to improve - please submit a GitHub issue or a pull request instead of commenting.
If you can't understand something in the article – please elaborate.
To insert few words of code, use the <code> tag, for several lines – wrap them in <pre> tag, for more than 10 lines – use a sandbox (plnkr, jsbin, codepen…)
© 2007—2020 Ilya Kantor
about the project
contact us
terms of usage
privacy policy
EPUB/PDF
The Modern JavaScript Tutorial How it's done now. From the basics to advanced topics with simple, but detailed explanations.
13th August 2020 10642 ★github Share: Search in the tutorial SEARCH Table of contents Main course contains 2 parts which cover JavaScript as a programming language and working with a browser. There are also additional series of thematic articles.
PART 1 The JavaScript language Here we learn JavaScript, starting from scratch and go on to advanced concepts like OOP.
We concentrate on the language itself here, with the minimum of environment-specific notes.
An introduction An Introduction to JavaScript Manuals and specifications Code editors Developer console JavaScript Fundamentals Hello, world! Code structure The modern mode, "use strict" Variables Data types Interaction: alert, prompt, confirm More… Code quality Debugging in Chrome Coding Style Comments Ninja code Automated testing with Mocha Polyfills Objects: the basics Objects Object copying, references Garbage collection Object methods, "this" Constructor, operator "new" Optional chaining '?.' Symbol type Object to primitive conversion Data types Methods of primitives Numbers Strings Arrays Array methods Iterables More… Advanced working with functions Recursion and stack Rest parameters and spread syntax Variable scope, closure The old "var" Global object Function object, NFE More… Object properties configuration Property flags and descriptors Property getters and setters Prototypes, inheritance Prototypal inheritance F.prototype Native prototypes Prototype methods, objects without proto Classes Class basic syntax Class inheritance Static properties and methods Private and protected properties and methods Extending built-in classes Class checking: "instanceof" Mixins Error handling Error handling, "try..catch" Custom errors, extending Error Promises, async/await Introduction: callbacks Promise Promises chaining Error handling with promises Promise API Promisification Microtasks Async/await Generators, advanced iteration Generators Async iterators and generators Modules Modules, introduction Export and Import Dynamic imports Miscellaneous Proxy and Reflect Eval: run a code string Currying Reference Type BigInt PART 2 Browser: Document, Events, Interfaces Learning how to manage the browser page: add elements, manipulate their size and position, dynamically create interfaces and interact with the visitor.
Document Browser environment, specs DOM tree Walking the DOM Searching: getElement, querySelector Node properties: type, tag and contents Attributes and properties More… Introduction to Events Introduction to browser events Bubbling and capturing Event delegation Browser default actions Dispatching custom events UI Events Mouse events Moving the mouse: mouseover/out, mouseenter/leave Drag'n'Drop with mouse events Pointer events Keyboard: keydown and keyup Scrolling Forms, controls Form properties and methods Focusing: focus/blur Events: change, input, cut, copy, paste Forms: event and method submit Document and resource loading Page: DOMContentLoaded, load, beforeunload, unload Scripts: async, defer Resource loading: onload and onerror Miscellaneous Mutation observer Selection and Range Event loop: microtasks and macrotasks PART 3 Additional articles List of extra topics that assume you've covered the first two parts of tutorial. There is no clear hierarchy here, you can read articles in the order you want. Frames and windows Popups and window methods Cross-window communication The clickjacking attack Binary data, files ArrayBuffer, binary arrays TextDecoder and TextEncoder Blob File and FileReader Network requests Fetch FormData Fetch: Download progress Fetch: Abort Fetch: Cross-Origin Requests Fetch API More… Storing data in the browser Cookies, document.cookie LocalStorage, sessionStorage IndexedDB Animation Bezier curve CSS-animations JavaScript animations Web components From the orbital height Custom elements Shadow DOM Template element Shadow DOM slots, composition Shadow DOM styling Shadow DOM and events Regular expressions Patterns and flags Character classes Unicode: flag "u" and class \p{...} Anchors: string start ^ and end $ Multiline mode of anchors ^ $, flag "m" Word boundary: \b More… Share Tutorial map Comments If you have suggestions what to improve - please submit a GitHub issue or a pull request instead of commenting. If you can't understand something in the article – please elaborate. To insert few words of code, use the <code> tag, for several lines – wrap them in <pre> tag, for more than 10 lines – use a sandbox (plnkr, jsbin, codepen…) © 2007—2020 Ilya Kantor about the project contact us terms of usage privacy policy