JavaScript Understanding the Weird Parts

An advanced JavaScript course for everyone! Scope, closures, prototypes, ‘this’, build your own framework, and more.
JavaScript Understanding the Weird Parts
File Size :
3.67 GB
Total length :
12h 13m



Anthony Alicea


Last update

Last updated 11/2022



JavaScript Understanding the Weird Parts

What you’ll learn

Grasp how Javascript works and it’s fundamental concepts
Write solid, good Javascript code
Understand advanced concepts such as closures, prototypal inheritance, IIFEs, and much more.
Drastically improve your ability to debug problems in Javascript.
Avoid common pitfalls and mistakes other Javascript coders make
Understand the source code of popular Javascript frameworks
Build your own Javascript framework or library

JavaScript Understanding the Weird Parts


Basic Javascript knowledge (variables, loops, and basic functions – that’s all the course expects you to know!)
A browser and text editor


Javascript is the language that modern developers need to know, and know well. Truly knowing Javascript will get you a job, and enable you to build quality web and server applications. NOTE: This course includes information on ECMAScript 6 (ES6) the next version of Javascript! In this course you will gain a deep understanding of Javascript, learn how Javascript works under the hood, and how that knowledge helps you avoid common pitfalls and drastically improve your ability to debug problems. You will find clarity in the parts that others, even experienced coders, may find weird, odd, and at times incomprehensible. You’ll learn the beauty and deceptive power of this language that is at the forefront of modern software development today. This course will cover such advanced concepts as objects and object literals, function expressions, prototypical inheritance, functional programming, scope chains, function constructors (plus new ES6 features), immediately invoked function expressions (IIFEs), call, apply, bind, and more. We’ll take a deep dive into the source code of popular frameworks such as jQuery and Underscore to see how you can use your understanding of Javascript to learn (and borrow) from other’s good code. Finally, you’ll learn the foundations of how to build your own Javascript framework or library.What you’ll learn in this course will make you a better Javascript developer, and improve your abilities in AngularJS, NodeJS, jQuery, React, Ember, MongoDB, and all other Javascript-based technologies!Learn to love Javascript, and code in it well. Note: In this course you’ll also get downloadable source code. You will often be provided with ‘starter’ code, giving you the base for you to start writing your code, and ‘finished’ code to compare your code to.


Section 1: Getting Started

Lecture 1 Introduction and The Goal of This Course

Lecture 2 Setup

Lecture 3 Setup (Visual Studio Code)

Lecture 4 Big Words and Javascript

Lecture 5 Watching this Course in High Definition

Lecture 6 Understanding, Frameworks, and The Weird Parts

Section 2: Execution Contexts and Lexical Environments

Lecture 7 Conceptual Aside: Syntax Parsers, Execution Contexts, and Lexical Environments

Lecture 8 Conceptual Aside: Name/Value Pairs and Objects

Lecture 9 Downloading Source Code for This Course

Lecture 10 The Global Environment and The Global Object

Lecture 11 The Execution Context – Creation and Hoisting

Lecture 12 Conceptual Aside: Javascript and ‘undefined’

Lecture 13 The Execution Context – Code Execution

Lecture 14 Conceptual Aside: Single Threaded, Synchronous Execution

Lecture 15 Function Invocation and the Execution Stack

Lecture 16 Functions, Context, and Variable Environments

Lecture 17 The Scope Chain

Lecture 18 Scope, ES6, and let

Lecture 19 What About Asynchronous Callbacks?

Section 3: Types and Operators

Lecture 20 Conceptual Aside: Types and Javascript

Lecture 21 Primitive Types

Lecture 22 Conceptual Aside: Operators

Lecture 23 Operator Precedence and Associativity

Lecture 24 Operator Precedence and Associativity Table

Lecture 25 Conceptual Aside: Coercion

Lecture 26 Comparison Operators

Lecture 27 Equality Comparisons Table

Lecture 28 Existence and Booleans

Lecture 29 Default Values

Lecture 30 Framework Aside: Default Values

Section 4: Objects and Functions

Lecture 31 Objects and the Dot

Lecture 32 Objects and Object Literals

Lecture 33 Framework Aside: Faking Namespaces

Lecture 34 JSON and Object Literals

Lecture 35 Functions are Objects

Lecture 36 Function Statements and Function Expressions

Lecture 37 Conceptual Aside: By Value vs By Reference

Lecture 38 Objects, Functions, and ‘this’

Lecture 39 Conceptual Aside: Arrays – Collections of Anything

Lecture 40 ‘arguments’ and spread

Lecture 41 Framework Aside: Function Overloading

Lecture 42 Conceptual Aside: Syntax Parsers

Lecture 43 Dangerous Aside: Automatic Semicolon Insertion

Lecture 44 Framework Aside: Whitespace

Lecture 45 Immediately Invoked Functions Expressions (IIFEs)

Lecture 46 Framework Aside: IIFEs and Safe Code

Lecture 47 Understanding Closures

Lecture 48 Understanding Closures – Part 2

Lecture 49 Framework Aside: Function Factories

Lecture 50 Closures and Callbacks

Lecture 51 call(), apply(), and bind()

Lecture 52 Functional Programming

Lecture 53 Functional Programming – Part 2

Section 5: Object-Oriented Javascript and Prototypal Inheritance

Lecture 54 Conceptual Aside: Classical vs Prototypal Inheritance

Lecture 55 Understanding the Prototype

Lecture 56 Everything is an Object (or a primitive)

Lecture 57 Reflection and Extend

Section 6: Building Objects

Lecture 58 Function Constructors, ‘new’, and the History of Javascript

Lecture 59 Function Constructors and ‘.prototype’

Lecture 60 Dangerous Aside: ‘new’ and functions

Lecture 61 Conceptual Aside: Built-In Function Constructors

Lecture 62 Dangerous Aside: Built-In Function Constructors

Lecture 63 Dangerous Aside: Arrays and

Lecture 64 Object.create and Pure Prototypal Inheritance

Lecture 65 ES6 and Classes

Section 7: Odds and Ends

Lecture 66 Initialization

Lecture 67 ‘typeof’ , ‘instanceof’, and Figuring Out What Something Is

Lecture 68 Strict Mode

Lecture 69 Strict Mode Reference

Section 8: Examining Famous Frameworks and Libraries

Lecture 70 Learning From Other’s Good Code

Lecture 71 Deep Dive into Source Code: jQuery – Part 1

Lecture 72 Deep Dive into Source Code: jQuery – Part 2

Lecture 73 Deep Dive into Source Code: jQuery – Part 3

Section 9: Let’s Build a Framework / Library!

Lecture 74 Requirements

Lecture 75 Structuring Safe Code

Lecture 76 Our Object and Its Prototype

Lecture 77 Properties and Chainable Methods

Lecture 78 Adding jQuery Support

Lecture 79 Good Commenting

Lecture 80 Let’s Use Our Framework

Lecture 81 A Side Note

Section 10: EXTRA: TypeScript, ES6, and Transpiled Languages

Lecture 82 TypeScript, ES6, and Transpiled Languages

Lecture 83 Transpiled Languages References

Section 11: EXTRA: Getting Ready for ECMAScript 6

Lecture 84 Existing and Upcoming Features

Lecture 85 ES6 Features Reference

Section 12: EXTRA: ES6 In-Depth

Lecture 86 ES6 In-Depth

Lecture 87 Promises, Async, and Await

Section 13: Conclusion

Lecture 88 Learning to Love the Weird Parts

Lecture 89 Bonus

Those with basic Javascript skills who wish to improve,Experienced coders coming from other programming languages,New and experienced Javascript coders who want to deepen their understanding of the language,Anyone who has found concepts just as object prototypes, closures, and other advanced concepts difficult to learn,Those who have suffered surprising errors while writing Javascript, and want to learn why and how to avoid them,Those interested in building their own frameworks, or being better able to learn from the source code of other well-known frameworks and libraries

Course Information:

Udemy | English | 12h 13m | 3.67 GB
Created by: Anthony Alicea

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top