An Introduction to JavaScript
Code editors
Developer console
JavaScript Fundamentals
Hello, world!
Code structure
The modern mode, "use strict"
Variables
Data types
Type Conversions
Operators
Comparisons
Interaction: alert, prompt, confirm
Conditional operators: if, '?'
Logical operators
Loops: while and for
The "switch" statement
Functions
Function expressions and arrows
JavaScript specials
Code quality
Debugging in Chrome
Coding style
Comments
Polyfills
Objects: the basics
Objects
Garbage collection
Symbol type
Object methods, "this"
Object to primitive conversion
Constructor, operator "new"
Methods of primitives
Numbers
Strings
Arrays
Array methods
Iterables
Map, Set, WeakMap and WeakSet
Object.keys, values, entries
Destructuring assignment
Date and time
JSON methods, toJSON
Advanced working with functions
Recursion and stack
Rest parameters and spread operator
Closure
The old "var"
Global object
Function object
The "new Function" syntax
Scheduling: setTimeout and setInterval
Error handling, "try..catch"
Custom errors, extending Error
Browser environment, specs
DOM tree
Walking the DOM
Searching: getElement* and querySelector*
Node properties: type, tag and contents
Attributes and properties
Modifying the document
Styles and classes
Element size and scrolling
Window sizes and scrolling
Coordinates
Introduction into Events
Introduction to browser events
Bubbling and capturing
Event delegation
Browser default actions
Dispatching custom events
Events in details
Mouse events basics
Moving: mouseover/out, mouseenter/leave
Drag'n'Drop with mouse events
Keyboard: keydown and keyup
Scrolling
Page lifecycle: DOMContentLoaded, load, beforeunload, unload
Resource loading: onload and onerror
Forms, controls
Form properties and methods
Focusing: focus/blur
Events: change, input, cut, copy, paste
Form submission: event and method submit
Decorators and forwarding, call/apply
Function binding
Currying and partials
Arrow functions revisited
Objects, classes, inheritance
Property flags and descriptors
Property getters and setters
Prototypal inheritance
F.prototype
Native prototypes
Methods for prototypes
Class patterns
Classes
Class inheritance, super
Class checking: "instanceof"
Mixins
ES6 Easy Wins - New Variables, Scoping and Template Strings
New Language Features — Arrow Functions, Destructuring
New Iterables and Looping over data
What the heck those ...three ...little ...dots actually do
How to structure your JavaScript with Modules and NPM
Advanced Classes, Proxies, Generators, Sets and Maps
How to write clean and consistent JavaScript with ESLint
Proper tooling + bundling setup with Webpack
Introduction to nodejs
Who can attend
Almost everyone! Advanced JavaScript developers will be able to go through the course a little more quickly, but I've designed this course to be as approachable as possible.