So you think you know JavaScript?
4.7 (164 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,083 students enrolled
Wishlisted Wishlist

Please confirm that you want to add So you think you know JavaScript? to your Wishlist.

Add to Wishlist

So you think you know JavaScript?

What every intermediate and advanced developer needs to know!
4.7 (164 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,083 students enrolled
Last updated 5/2016
Current price: $10 Original price: $50 Discount: 80% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 6 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Use closures and callbacks effectively
  • Understand how JavaScript variable scoping works
  • Be able top create prototype inheritance chains
  • No longer struggle with the meaning of the "this" keyword
View Curriculum
  • You must have a basic understanding of your Operating System's command line
  • You must have a beginner to intermediate understanding of the JavaScript language

Do you want to dive into three of the trickiest aspects of the JavaScript language? From beginner to intermediate - this course will bring you up to speed on some of the must have knowledge of being able to write in it effectively, while demystifying some its most often-misunderstood constructs!

In this course, you will learn all about scopes, “this”, and prototypes! Training content often doesn’t dive into the specifics of the nature of these “advanced” features. However, it is my belief that this is necessary knowledge to be an effective JavaScript programmer!

My goal at the end of this course is that variable scoping, the usage of the “this” keyword, and the creation and use of prototypes is well understood from a ground up perspective without compromise. Simply by having a firm grasp on these aspects of the language, many issues that even years-long JavaScript developers face can be resolved easily!

We will discuss, in depth:

  • Scopes and Closures

  • Immediately-Invoked Function Expressions (IIFEs)

  • Hoisting

  • The “this” keyword

  • The call/apply/bind functions

  • The nature of the magical “new” keyword

  • Object and function prototypes

  • And more!
Who is the target audience?
  • This course is for beginner to intermediate JavaScript developers who want to get a better handle on scopes, closures, prototypes and the "this" keyword
  • This is NOT an introduction to JavaScript
Compare to Other JavaScript Courses
Curriculum For This Course
25 Lectures
3 Lectures 22:13

This video overviews what we will be learning in this course!

Preview 04:52

We will be using a package called live-server in our examples. This video demonstrates how to get it installed.

Installing live-server

This video sets up our workspace for all of our examples.

Building Our Workspace
Scopes, Callbacks and Closures
9 Lectures 02:23:31

This video shows a common issue that people often face in regards to how scoping and closures work in JavaScript.

Preview 06:56

The first scope-related topic we cover is the global scope. We discuss what it is, and why it can cause issues.

Preview 10:00

Next up, we talk about what scopes are, and how to create them!

Preview 17:19

IIFE’s are used to resolve scoping issues - and this video demonstrates their syntax and usage in depth.

Immediately-Invoked Function Expression (IIFE)

Hoisting is an interesting JavaScript behavior that we explore in this video.


This video discusses the differences between statically and dynamically scoped languages.

Static/Lexical vs Dynamic Scope

Next up, closures! These are a very powerful tool in JavaScript - and in this video we take a look at what they are, how they’re used, and possible issues that you may have with them.

Closures - Part 1

This video continues the previous lecture about how to understand closures.

Closures - Part 2

In the final video, we discuss the new ES2015 block scoping feature - which gives us more control over how scopes are created and destroyed.

ES2015 Block Scoping
What is “this”?
6 Lectures 01:21:21

We first introduce the keyword, why it’s useful, and some of the issues a person may have with using it.

Introduction to This - Part 1

We finish our examples by showing more instances of how it can cause issues within your code if used improperly.

Introduction to This - Part 2

Three of the more interesting functions in JavaScript are bind, call and apply - and they get confused with each other! This video talks about what they are, and how they can be used to “change” this.

Changing This - bind/call/apply

Bind is often a little more confusing than call and apply, so we continue the lecture by discussing more about how it is used.

Bind - Final Words

ES2015 introduced a new type of function expression that affects the “this” binding. This video talks about how we can use it to resolve common issues.

ES2015 Arrow Functions

We wrap up this section with a discussion about a proposed new operator in the JavaScript language - that we may be seeing implemented within the next few specifications.

6 Lectures 01:40:01

The first thing we do is discuss object prototypes; what they are, and how they can be useful.

Object Prototypes - Part 1

We finish our discussion about object prototypes with more examples of their use.

Object Prototypes - Part 2

Next up, we discuss constructor functions, and the “prototype” property - which is very often a source of confusion.

Function Prototypes

Object.create is a new way, as of ES5, to create objects, and affect their prototype. In this video, we discuss that function in depth.


Finally, we talk in depth of how to achieve classical-style inheritance using prototypes, Object.create, and constructor functions.

Prototypal Inheritance

ES2015 introduces a new way to define constructor functions with the “class” keyword. This video talks about the class keyword and how it’s used to simplify our code.

ES2015 Classes
The End
1 Lecture 03:28
About the Instructor
3D BUZZ Programming and Digital Art training
4.4 Average rating
3,814 Reviews
64,155 Students
17 Courses

3D Buzz is a company dedicated to providing the world with quality technical education over 3D animation, programming, game design, and much more. We have been producing training videos since 2001, always pushing the envelope in the development of informative lessons with an engaging and personable format. We try to make the viewer feel more like they're involved in a classroom discussion with an energetic teacher as opposed to being stuck in a dry, uninspired, run-of-the-mill training video.

But 3D Buzz is so much more than just training videos. We maintain one of the most helpful online communities on the internet. We do our very best to keep in close contact with our community, and to make sure that when you're here, you feel at home.

Nelson LaQuet
4.5 Average rating
1,125 Reviews
5,745 Students
5 Courses
Software Developer

Nelson is a software developer with fluency and professional experience in C#, C++, HTML/CSS, JavaScript and PHP.

Since 2007 he has worked professionally as a web developer, game developer and app developer in a variety of different languages and platforms.

He began teaching programming in 2010 as an instructor for While at 3dbuzz, he developed training video series, hosted live training webinars, and became the lead programming instructor and administrator for the site.

His training style emphasizes deep understanding of the material and hands-on practice - with most of his training programs centered around the development of complete, real world applications.