-
Get started now
£278Now £250.00Unlimited Video + Zoom
-
Get started now
£83Now £756 Months Access
-
Get started now
£167Now £150Unlimited Access
Pricing options
Explain how different pricing options might be valuable to different segments of your audience.
Course curriculum
-
-
Welcome to Advanced JavaScript
-
What this course covers
-
Who this course is for and what you need first
-
Setting up your tools: VS Code, Node.js, DevTools and Git
-
How to get help during the course
-
-
-
Chapter overview
-
Functions are values
-
Higher-order functions
-
Exercise 1.1: Build your own map, filter and reduce
-
Lexical scope and the scope chain
-
Closures explained
-
The var vs let loop bug
-
IIFEs and the module pattern
-
Exercise 1.2: A bank account with private balance
-
Closures and memory leaks
-
The four rules of this
-
Losing this, and arrow vs regular functions
-
call, apply and bind
-
Exercise 1.3: Fix the this bugs
-
Pure functions and immutability
-
Currying and partial application
-
Compose and Pipe
-
Memoization
-
Debounce and throttle
-
Mini project: A smart search box
-
Chapter Recap
-
-
-
Chapter overview
-
Property descriptors
-
Getters and Setters
-
Object.seal vs Object.freeze
-
The prototype chain and Object.create
-
Exercise 2.1: A tamper-proof settings object
-
Constructor functions and new
-
Instance vs prototype methods
-
Inheritance by hand
-
The four pillars of OOP
-
Exercise 2.2: Shapes with constructor functions
-
Classes: prototypes with nicer syntax
-
Static methods, fields and blocks
-
Public and private fields
-
Extends and Super
-
Overriding and polymorphism
-
Exercise 2.3: Employees and payroll
-
Instanceof and Type Checks
-
Composition and mixins
-
Classes vs factory functions
-
Mini project: A shop inventory system
-
Chapter recap
-
-
-
Chapter overview
-
Why write tests?
-
The testing pyramid and unit tests
-
Setting up Vitest
-
Your first test file
-
Arrange, Act, Assert
-
Matchers: toBe, toEqual and more
-
Exercise 3.1: Test a string toolkit
-
Testing our Chapter 1 utilities
-
Watch mode and code coverage
-
Good test names and edge cases
-
Exercise 3.2: Test your Chapter 1 toolkit
-
Testing classes with setup hooks
-
Table tests with it.each
-
Spies: vi.fn and vi.spy
-
Mocking modules with vi.mock
-
Exercise 3.3: Fake the dependencies
-
Fake timers: testing debounce
-
A first look at async tests
-
Test-driven development: red, green, refactor
-
Avoiding brittle tests
-
Running tests on GitHub Actions
-
Mini project: A shopping cart, test-first
-
Chapter recap
-
-
-
Chapter overview
-
What regular expressions are for
-
Creating a regex: literal vs RegExp
-
Regex methods: test, match, replace and more
-
Flags
-
Literal characters and escaping
-
Character classes
-
Quantifiers
-
Anchors and word boundaries
-
Exercise 4.1: Pattern warm-up
-
Greedy vs lazy matching
-
Alternation and a syntax recap
-
Exercise 4.2: Clean up messy data
-
Capturing groups
-
Named and non-capturing groups
-
Replacing with groups or a function
-
Lookahead and lookbehind
-
The g flag gotcha
-
Exercise 4.3: Test-driven validators
-
Unicode-aware patterns
-
Practical validation patterns
-
Parsing log lines
-
Catastrophic backtracking and using regex wisely
-
Mini project: A tested form validator
-
Chapter recap
-
-
-
Chapter overview
-
Blocking vs non-blocking code
-
The call stack and the runtime
-
The call stack and the runtime
-
The event loop explained
-
The ordering puzzle: tasks vs microtasks
-
Callbacks and the error-first style
-
Callback hell
-
Exercise 5.1: Predict, then prove
-
Introducing promises
-
then, catch, finally and chaining
-
Promisifying callback APIs
-
Common promise mistakes
-
Exercise 5.2: Promisify and flatten
-
async and await
-
Error handling with try/catch
-
Sequential vs parallel
-
Promise.all, allSettled, race and any
-
Top-level await and for await…of
-
Exercise 5.3: Refactor to async/await
-
Unhandled rejections
-
Timeouts and AbortController
-
Retry with exponential backoff
-
Testing async code in Vitest
-
Mini project: An async loading dashboard
-
Chapter recap
-
About this course
- £250.00
- 200 lessons
- 25 hours of video content