
Update your JavaScript with ES6, ES7, and ES8, and learn modern quality principles, modular organization, and key features like symbols, proxies, and classes for NodeJS environments.
Explore the visual history of JavaScript and Ecmascript from 1995 to the modern web, and see how NodeJS, Ajax, jQuery, and the V8 engine drive ES6 updates.
Trace the rise of JavaScript from its C-like beginnings to the modern web, show how Ecmascript becomes the standard, and highlight ES6, ES7, and ES8 shaping front-end and back-end development.
Plan your journey through the modular ES6, ES7, and ES8 course, focusing on sections, easy wins, and essentials like let, const, template literals, promises, and async/await.
Master template literals in JavaScript using backticks for multi-line strings and embedded expressions, improving readability, replacing concatenation and sprintf-style formatting, with tag literals introduced next.
Validate SQL statements using tagged templates for select or update with where and order by. Implement axios-driven UI that renders coins via templates, using closures, and mocks a DB upload.
Explore ES6–ES8 function updates, including default parameters and the rest operator, with examples of the arguments object and notes on destructuring.
Explore spread syntax and rest operator, showing how rest collects arguments into an array and spread unpacks an array into individual parameters. Apply it to arrays, objects, and reducers.
Master object literals and destructuring in JavaScript, using property shorthand, renaming, nested destructuring, array destructuring, and function parameter destructuring to write cleaner, readable code.
Explore the history and core concepts of JavaScript classes, including why ES6 class syntax is syntactical sugar over prototype inheritance, and how this shapes modern JavaScript design.
Explore the shift from es5 constructors to es6 classes, including constructors, prototype sharing, and cleaner power-up patterns for hero objects.
Explore how setters and getters manage access to object fields across JavaScript and Java, using private and public modifiers, and understand mutator functions for encapsulation.
Explore prototypal inheritance with extends and super to create subclasses like human from superhero, overriding methods and sharing properties through the parent class.
Create arrays from iterables with Array.from in ES6 and apply a mapping function via the second parameter. Explore examples using template literals, arrow functions, and console logging to see results.
Explore how array.of() creates an array from arguments and how array.fill() mutates elements within a range, and note the polyfill approach versus the regular Array constructor.
Explore how to use array find and findIndex with callbacks to locate the first city whose main.temp exceeds a threshold in weather data, and compare with map.
Demonstrate how JavaScript stores variables by value for primitives and by reference for objects, highlighting primitive data types, strings, numbers, booleans, null, undefined, symbol, and how arrays share references.
Explore map methods such as get, set, clear, and for each, and learn to access size, keys, values, and entries, while comparing maps to objects and noting their iterable order.
Discover how weak maps differ from regular maps by enabling garbage collection when keys have no references, while remaining non-iterable and offering only get, set, has, and delete.
Discover how the set constructor guarantees unique elements, holds any data type, and maintains insertion order, with practical usage of add, size, clear, delete, and iteration methods.
Weak sets hold only objects, use weak references, rely on garbage collection, are not iterable, have no get method, and size is zero, useful for tagging objects.
Introduces the symbol data type as a new ES6 primitive, a totally unique identifier to avoid name collisions and enable private-like properties, with descriptors for debugging and the symbol.for method.
Explain what a promise is and why it matters in JavaScript, showing how promises replace callback hell with then, catch, all, race, and the resolve/reject flow.
Explore promise syntax by building a simple promise, understanding the constructor, resolve and reject, and chaining with then, catch, all, and race for asynchronous flows.
const apiKey = `e9ddb24aed6d48c4342303aba5269e28`;
const apiUrl = `https://api.themoviedb.org/3/search/movie?api_key=${apiKey}&query=`;
const imgUrl = `http://image.tmdb.org/t/p/w300/`;
Explore promises and asynchronous ajax requests to the open movie database, learn to fetch movie data with then and catch, and use Promise.all to update the page.
Learn to use Promise.all in ES6 to run three input-based promises concurrently, convert node lists with array.from, and update the DOM once all promises resolve.
Learn to chain promises for fluent asynchronous programming by replacing callback hell with sequential Ajax calls that fetch movie data, cast, and person details.
Master promises and asynchronous file I/O in node by using the fs module to read a directory, read files, and count occurrences of the string gotcha across files.
Master async and await to simplify promise-based JavaScript, making asynchronous code read like normal code. Explore environment requirements, examples with setTimeout, and the transition from promises to async workflows.
Take the program available at the two github links below, and convert it from using promise chains to async/await.
https://raw.githubusercontent.com/ridiculous-inc/jsPromisesAndAsync/master/promisesChained.html
https://raw.githubusercontent.com/ridiculous-inc/jsPromisesAndAsync/master/promisesChained.js
Object.values() and Object.entries(), padding, and trailing commas
Explore the proxy constructor and reflect to intercept and control object operations with traps for get, set, has, construct, and apply, enabling middleware and validation.
Explore Reflect in JavaScript by using Reflect.apply, defineProperty, getOwnPropertyDescriptor, deleteProperty, and proxy traps, and learn how Reflect provides introspection and safe, cleaner object interactions.
Explore generators, iterators, and iterables in JavaScript, and master the for-of loop, while comparing concepts with Python origins and using Mozilla documentation for clear references.
Explore generators in JavaScript with function* and yield to pause and resume execution, control iteration with next, and create memory-efficient, potentially infinite sequences while reading the docs.
Learn how iterables and iterators work together, and use for..of to loop over them. Understand the iterator protocol, symbol.iterator, and the next method, including why strings are iterables, not iterators.
Exponentiation, Includes, and Rest parameter destructuring
If you have spent anytime coding in JavaScript, you have heard about ES6, ECMAScript, or ES2015. Maybe it was an obnoxious co-worker trying to put you down, another Udemy course keeps mentioning it, or you saw it on a Stack Overflow answer. If you're not familiar with it, or are still wondering what the difference is between ECMAScript and Javascript, it's the update that occurred in 2015 and subsequent years. Considering the history of JavaScript (which started in 1995), there was no update between 2000 and 2008, then again after that from 2008 until 2015, ECMAScript 2015 it is a BIG deal. It modernizes JavaScript. Smaller, but still important changes were released in ES7 (2016) and ES8 (2017).
I will take you through all the changes, one at a time in a modular approach. This means that you can do chapters as needed, out of order, etc. without serious issues. There is a significant history lesson in order to place JavaScript and ECMAScript in context and we'll do comparisons to other languages so you get a feel for why certain things were added or changed. I also do frequent comparisons between JavaScript and other languages like C, Java, and Python. You do NOT need to know these languages to appreciate the nuances; they are simply helpful at understanding the reasons behind the ECMAScript standard, JavaScript, and update.
I am still adding challenges for the various sections. Challenges that are already in, are in all caps (i.e., CHALLENGE) and are a great way to apply and practice! This course will challenge your JavaScript as you learn many new features, but also as you learn how JavaScript and ECMAScript relates to other languages (C, Java, etc.).
Course Layout
Intro
ES6 Easy Wins
Classes
Array Changes
Map Constructor and Weak Map
Set Constructor and Weak Set
Promises
ES8 (Async)
Proxy Constructor and Reflect Object
Generators and iterators