Object Oriented JavaScript

Need help getting started?


Course Resources

Additional Reading

  1. Introduction to Object-Oriented JavaScript on Mozilla Developer Network

  2. Eloquent JavaScript by Marijn Haverbeke

Downloadable Materials

  1. Object Oriented JavaScript Supplementary Notes

You can download Supplemental Materials, Lesson Videos and Transcripts from Downloadables (bottom right corner of the Classroom) or from the Dashboard (first option on the navigation bar on the left hand side).

Run the code as shown in the lessons

  1. Code for class exercises and notes

Course Syllabus

Lesson 1: Scopes and Closures

We’ll start by discussing JavaScript’s functional variable scoping features, including lexical scopes (variable availability as you write your code) and dynamics scopes (variable availability as your code actively runs). We’ll then discuss closures, an often misunderstood but incredibly useful feature available in only a handful of languages, including JavaScript.

Lesson 2: The Keyword "this"

You’ll start your dive into JavaScript object-oriented features by first discovering the parameter “this”. You’ll learn how the value of “this” is determined within various code structures and why it might be a lot easier to think of “this” as a parameter rather than a keyword.

Lesson 3: Prototype Delegation

You’re probably using one of JavaScript’s inheritance models already: prototype delegation! In this lesson you’ll learn more about this unique feature of JavaScript, how JavaScript uses this feature internally and how you can take advantage of it to maximize your application’s memory footprint.

Lesson 4: Code Reuse

There are numerous ways to write concise, maintainable and reusable code in JavaScript and you’ll practice a number of them in this lesson. We’ll start writing a library using basic functions and learn the decorator pattern. Then, we’ll refactor this library into the functional, prototypal and pseudoclassical inheritance models. Finally, we’ll explore sub-classing — coding objects that directly inherit from objects we’ve previously defined.


We'd like to thank Marcus Phillips and the rest of the HackReactor team for all their help in getting this course together.