15-Day Advanced JavaScript Mastery Plan
Day 1: Deep Dive into Functions
- Closures and lexical scope
- Higher-order functions
- Currying and partial application
- Task: Build a custom `once` function and memoizer.
Day 2: Advanced Arrays
- Deep use of `map`, `filter`, `reduce`
- Chaining methods
- Immutability with arrays
- Task: Refactor imperative array logic into declarative.
Day 3: Objects Mastery
- Object destructuring in depth
- Property descriptors (`Object.defineProperty`)
- Object cloning and equality (shallow vs deep)
- Task: Write your own `deepClone` function.
Day 4: This, Call, Bind, Apply
- Implicit vs explicit binding
- Arrow function `this` behavior
- Task: Re-implement `bind` method.
Day 5: Prototypes and Inheritance
- `[[Prototype]]` and `__proto__`
- Prototype chain lookup
- Constructor functions vs ES6 classes
- Task: Recreate class-based inheritance with prototypes.
Day 6: ES6+ Features
- Spread, rest, optional chaining, nullish coalescing
- Template literals, short-circuiting
- Modern module syntax (`import`, `export`)
- Task: Refactor old-style code into modern JS.
Day 7: Scopes, Hoisting, and TDZ
- Variable hoisting
- Temporal Dead Zone
- Block-level vs function scope
- Task: Predict output of tricky scope puzzles.
Day 8: Asynchronous JavaScript I
- Event loop, call stack, task queue
- `setTimeout`, `setInterval`, `clearInterval`
- Microtasks vs macrotasks
- Task: Trace execution order of async code.
Day 9: Asynchronous JavaScript II
- Promises in depth
- Chaining and error handling
- Promise combinators: `all`, `allSettled`, `race`, `any`
- Task: Chain API simulations using `Promise`.
Day 10: Async/Await
- Syntax, error handling with `try...catch`
- Parallel and sequential async flows
- Task: Create a data fetch simulator using `async/await`.
Day 11: JavaScript Design Patterns
- Singleton, Factory, Observer, Module
- Composition vs Inheritance
- Task: Implement a pub/sub event system.
Day 12: Functional Programming
- Pure functions, immutability, recursion
- `compose`, `pipe`, function chaining
- Task: Build a small library of utility functions.
Day 13: Algorithms in JS
- Sorting: Bubble, Quick, Merge (JS implementations)
- Searching: Binary, Linear
- Big-O basics
- Task: Implement 3 sorting algorithms manually.
Day 14: Data Structures in JS
- Stack, Queue, Linked List, Hash Table
- Set, Map, WeakMap
- Task: Build your own linked list and stack classes.
Day 15: Capstone & Mock Interview
- Build: CLI to-do list, quiz app, or promise-based data fetcher
- Review topics with flashcards/notes
- Mock coding challenges (e.g., on LeetCode, Codewars)