Description
In this course, you will learn :
- Learn modern JavaScript and master advanced concepts like promises, symbols, and metaprogramming
- Develop core JavaScript skills needed to level up your programming skills
- Strengthen your coding skills through practice examples and exercises
- Write efficient and less error-prone code
- You'll begin by learning the fundamentals of modern JavaScript, such as variables, constants, classes, iterators, arguments, loops, arrow functions, and symbols.
- You will delve deeply into complex features such as destructuring, literals, inheritance, modules, promises, and metaprogramming in the second half.
Syllabus :
1. JavaScript Gotchas
- Be Careful Where You Break Lines
- Use === Instead of ==
- Declare Before Use
- Stay One Step Ahead
- Lint the Code
2. Variables and Constants
- Out with var
- In with let
- Perils of Mutability
- const
- Safer Code With let and const
3. Working With Function Arguments
- The Power and Perils of arguments
- Using the Rest Parameter
- The Spread Operator
- Uses of the Spread Operator
- Defining Default Values for Parameters
- Multiple Default Parameters
- Expressions as Default Values
4. Iterators and Symbols
- The Convenience of Enhanced for
- Symbol—A New Primitive Type
- Global Registry With Symbol
- Special Well-Known Symbols
- Using Custom Iterators
- Implementing an Iterator
- Removing Noise With Yield
- Removing Noise With Generators
- Combining Generators
- Creating Infinite Iterators
5. Arrow Functions and Functional Style
- From Anonymous to Arrow Functions
- Multiline Arrow Functions
- Using the Rest Parameter and Default Arguments
- Anonymous vs. Arrow Functions
- Lexically Scoped this and arguments
- Limitations of Arrow Functions: Anonymous and Not a Constructor
- Limitations: No Prototype and new.target Property
- Limitations: Generators, Exceptions, and Object Literals
- When to Use Arrow Functions
- Arrow Functions and Functional Style
6. Literals and Destructuring
- Using Template Literals
- Multiline Strings
- Tagged Template
- Enhanced Object Literals
- Array Destructuring: Extracting and Ignoring Values
- Array Destructuring: Default and Parameters Values
- Object Destructuring: Extracting Object Properties
- Object Destructuring: Default and Parameter Values
- Object Destructuring: Deep Destructuring, and Collisions
- Object Destructuring: The Role of the Spread Operator
7. Working with Classes
- Creating a Class
- Implementing a Constructor
- Defining a Method
- Defining Computed Members
- Creating Properties
- Defining Class Members
- Class Expressions
- New Built-in Classes: Set
- New Built-in Classes: Map
- New Built-in Classes: WeakSet and WeakMap
8. Using Inheritance
- Understanding Prototypal Inheritance
- Inheriting from a Class: Subclass and Overridden Methods
- Inheriting from a Class: extends keyword and Prototype Chaining
- Inheriting from a Class: Default Constructors and Legacy Classes
- Managing Instance Types
- Managing Instance Types Rules
- Managing Instance Types with species
9. Using Modules
- Creating a Module
- Exporting from a Module
- Default Exports
- Reexporting from Another Module
- Importing from a Module
10. Keeping Your Promises
- No Thanks to Callback Hell
- Promises to the Rescue
- Ways to Create a Promise
- Chaining Promises
- Working with Multiple Promises: Racing Promises
- Working with Multiple Promises: Gathering All Promises
- Async and Await
11. Exploring Metaprogramming
- The Power and Perils of Metaprogramming
- Dynamic Access
- Member Injection: Instance
- Member Injection: Class's Prototype and Property
- Member Injection: Injecting Multiple Properties