- Course Introduction
- Where will You Go with JavaScript?
- Tools You Will Need for this Course
- A Word about the Exercise Files
- Think Like a Programmer: Libraries and Frameworks
- Advanced Concepts for Functions and Objects
- REVIEW: Function Declarations and Function Expressions
- Functions are Objects
- First Class Functions
- Invoking Functions
- Creating JavaScript Objects
- Understanding this
- Examining this with Normal Function Invocation
- Normal Function Invocation Using strict mode
- Examining this with Method Invocation
- Understanding Prototypes
- Understanding the Prototype of Functions
- Using call and apply Function Methods
- Using the bind Function Method
- Invoking Functions as Constructors: The Magic of new
- Constructor Invocation and the Value of this
- Higher Order Functions, Callbacks and the Problem with this
- Arrow Functions
- REVIEW: Invoking Function and this
- Section Quiz
- Abstraction and DRY Coding
- Abstraction and DRY Coding: Exercise 1
- Working with Objects Introduction
- Detecting Properties on Objects
- Changing Property Attributes
- Exercise 2: Working with Objects
- Making Objects Immutable
- ES6 Object Features
- Understanding Method Chaining
- Section Quiz
- The Power of Functions Introduction
- Immediately Invoked Function Expressions (IIFEs)
- Exercise 3: Immediately Invoked Function Expressions
- Review of Scope
- Understanding Closure
- OPTIONAL: Closure Take 2
- Avoiding Global Variables
- Using the Namespace Pattern
- Closure: Exercise 4
- Namespace Pattern Exercise 5
- The Module Pattern Part 1
- Optional: Overview of Fill-In-Question Code
- The Module Pattern: Part 2
- The Module Pattern: Part 3
- The Module Pattern: Part 4
- Module Pattern Exercise 6
- Module Pattern Exercise 7
- Introduction to Working with Data
- JSON Basics
- Creating a JSON File
- Loading a JSON File Using XMLHttpRequest
- Testing on a Server
- Setting Up a Local Server Using Node
- JSON Data Exercise 8
- Using ECMAScript Native Modules
- Important Features of Native Modules
- Applying Native Modules
- Bundling Native Modules
- Approaches to Programming
- Introduction to Object Oriented Programming
- OOP Theory
- Review: Setting the Prototype
- The Constructor Property
- Project: Applying OOP Part 1
- Project: Applying OOP Part 2
- Project: Applying OOP Part 3
- Project: Applying OOP Part 4
- Project: Applying OOP Part 5
- Project: Applying OOP Part 6
- Project: Applying OOP Part 7
- Project: Applying OOP Part 8
- Project: Applying OOP Part 9
- Project: Applying OOP Part 10 - Getters and Setters
- Project: Applying OOP Part 11 - Wrap Up
- Object Oriented Programming: Follow Up Topics
- Enumerating Objects with the for in Loop
- Private Data in Constructors
- Creating Safe Constructors
- Can I Modify the Built-in Prototypes?
- What About ES6 Classes?
- Starting a Project