
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Explore core concepts and advanced techniques in JavaScript for learners with basic programming knowledge. Set up your environment with a browser and VS Code, and create a project folder.
Explore how to read and understand JavaScript code and apply techniques in daily life coding, with step-by-step guidance to improve your skills.
Identify your programming background and join if you have JavaScript experience, then re-watch lectures, adjust playback speed, tackle coding challenges, and review solutions in the Q&A.
Create two helper methods: an error function using console.log with %c to apply CSS styling, and assert function that prints pass or fail in green or red with truthy values.
Learn how to define functions in JavaScript and how hoisting affects them: function declarations hoist, while function expressions assigned to variables or window properties do not, impacting call order.
Explore recursion with named functions and see how functions act as objects, including using argument.callee for anonymous recursion and caching prime checks.
Explore ES6 functions, focusing on lambda functions as anonymous, concise expressions. Define a lambda with parameters, fat arrow notation, and a single-expression body for return, then assign and call it.
Learn how this context works in JavaScript, and see when a function is an object property versus a global function, and how call and apply bind this and arguments.
Examine ES6 function context, contrasting traditional functions where this targets the katana object, with lambda function where this points to the global window, and how use alters issharp.
Learn how JavaScript creates objects with the new operator and function templates, define properties and methods, and enforce using new to avoid binding to the window object.
Learn to handle flexible arguments in JavaScript with the arguments object, convert to an actual array, and apply Math.min or sort to find min and max.
Master ES6 parameters by using default parameters to handle missing values, and rest parameters to collect arguments, while understanding undefined, null, and the arguments object for flexible function calls.
Learn how arrays and objects copy in JavaScript, why assignment copies references, and how the spread operator creates true copies and merges data.
Learn how to pass array elements as function parameters using the spread operator in JavaScript, including examples with multiple values, rest parameter positions, and limitations with objects.
Learn how closures preserve outer scope and fix asynchronous loop issues using a self-invoking function, while using closures to create private properties and safe counter patterns.
Explore the closures problem in JavaScript, analyzing execution order with the browser and debugger, and learn how closures fix the problem by capturing and using variables inside a function.
Explore how ES6 introduces let and const to fix var's global scope issues by providing block scope and preventing reassignment, and compare their use to var in JavaScript.
Explore prototypical inheritance in JavaScript by linking shared methods to a prototype, demonstrating how objects access properties through the prototype chain and understand this context.
Explore how inheritance works in prototype-based JavaScript by deriving child classes from a parent animal class and sharing properties and methods via the prototype.
Explore how built-in prototypes for number, string, boolean, function, and object work in JavaScript, and learn to modify or extend them with custom methods like toFixed and replace.
Explore how ES6 introduces the class keyword for defining objects, instantiate them with new, and attach properties and methods using this inside a constructor.
Explore ES6 class inheritance by extending a base class with extends and super, use constructors, and share methods without duplicating them across instances.
Create a custom bind function that changes a function’s context without calling it, returning a new bound function using closure and prototype, and demonstrating call, apply, and argument handling.
Master enforcing function context in JavaScript by implementing a bind-like mechanism that fixes the first parameter, binds to a context, and uses arguments, call, and prototype methods.
Discover how to bind a function to a specific context, use this inside the bound function, return values when called, and align behavior with call or apply.
Enforce function context in ES6 by using arrow functions to preserve this and arguments, and apply rest parameters, spread, and bind techniques to reduce code.
Hello Everyone,
Welcome to your first step on the path to becoming a JavaScript ninja! In this course, I'll be teaching you many core concepts and advanced techniques of my absolute favorite language (JavaScript!).
You will learn modern JavaScript step-by-step. I will guide you through practical and fun code examples, and important theories about how JavaScript works behind the scenes.
You will also learn how to think like a developer, how to plan features, how to architect your code, how to debug code, and a lot of other real-world skills that you will need in your developer job.
Who this course is for:
Those who already have programming skills and wants to become an expert in JavaScript
Front-end/Back-end developers who want to level up their JavaScript knowledge using modern, cutting-edge techniques
Requirement:
Basic Understanding of any programming language.
Any computer and OS will work — Windows, macOS, or Linux.
A basic understanding of HTML and CSS is a plus, but not a must!
Why am I the right JavaScript teacher for you?
My name is Taha Shahid, I'm an experienced web developer, I have been teaching on-site Programming/Development courses since 2013 to thousands of Students, always listening to feedback and understanding exactly how students actually learn.
Recently, I took all my teaching experience to build this JavaScript course. It's the most in-depth JavaScript course that you will find on Udemy.