Real-life application of LET
Course Content
0 / 188 completedEverything you need to know about VAR
Everything you need to know about LET
Constant
TDZ Temporal Dead Zone
Real-life application of LET
Reflect and its methods
Revocable proxy
What is Proxy
Create private properties using the GET trap
The SET trap
The has and deleteProperty trap
Use a proxy object as the prototype
The defineProperty trap
The apply trap
The constructor trap
JSON
Introduction to CommonJS
The mechanism of CommonJS the module object
Circular dependency
How CommonJS handles cache require.cache
ES6 import and export
How to 'import'
Named export
Default export
The difference between named export and dynamic export dynamic reference
Use ESM in browser
How to enable the strict mode
Changes brought by the strict mode
proto
The prototype property of a constructor
How our own constructor uses the prototype chain
Real-life application of prototype chain
Introduction to the Object constructor
Object.seal()
Object.freeze()
Object.values(), Object.keys(), Object.entries(), Object.is()
Object.setPrototypeOf() and Object.assign()
Object.create() Part 1
Object.create() Part 2
Property attributes
The descriptor object
Create properties with customized attributes
Object.preventExtensions()
Getter and Setter introduction
Create accessors using Object.defineProperty()
Two-way data binding using getter and setter
How to define your own constructor function
Prototype and static properties and methods
Review, comparison and summary
Private properties in constructors
How to define getter and setter in a constructor
Class introduction
How to define properties
How to define methods instance, prototype and static
Fields
Private properties in classes
Who has the highest priority Variable name, function name or argument name
Arguments, caller, callee
Three ways to redirecting THIS of a funciton
Higher-order function and currying
Currying and closure
Extend properties
Extend methods
Application extending the Array() constructor
static get [Symbol.species]
new.target control the instantiation location
Make the parent class 'un-newable'
Mixin
Data structure Queue, Stack, and Heap
Thread and Process, sync and async, blocking and non-blocking
Recursion and stack overflow
Macro tasks, micro tasks, and their queues
Event loop, micro task queue, macro task queue
Interview challenges predict the result of the following programs
process.nextTick()
What is tail call optimization
Real-life application of tail call optimization
Encapsulation, inheritance, polymorphism
Differences between a primitive prop. value and a reference-type prop. value
Douglas Crawford's program recreate Object.create()
The creative combination of a constructor and the call or apply method
The genius combination of two constructors
Parasitic inheritance
instanceof and typeof
'Shallow copy an object
Deep copy an object
Deep assign an object into another one
JavaScript garbage collection and memory leak
Circular reference, reference counting and mark and sweep
Bit, byte, word, memory address and byte addressing
Basic encoding knowledge
Memory address and byte addressing
Bit width
Array basics
String basics
Calculating word count using the split() method
Extract a section of a string
Replace a section of a string
Highlight selected texts
How does an array affect THIS in a function or method
Concatenate two arrays, operating the first and last element
Remove duplicated elements using two methods
Check the entire array and find the matching element
How to remove and replace designated elements and retrieve an array segment
How to find the max and min element and how to reorganize array elements
Array with holes
Data types in JavaScript
Type coercion, wrapper object, explicit and implicit typecasting
Compare NULL, undefined, and NaN
Closure
Real-life application of Closure
Syntax of arrow function
THIS in an arrow function
Application of arrow function
The problems with typeof and instanceof
Create a data type checker by combining typeof and instanceof
Checking data type using the constructor property
Checking data type using the toString method and the call or apply method
Scope chain and closure
Lexical scoping vs. dynamic scoping
Switching two variable values without creating a new variable
Improve the bubble sorting program by ending the loop at the earliest timing
The problem with the inner FOR loop
Avoid unnecessary comparisons using rightSortBorder
LeftSortBorder avoiding unnecessary comparisons while iterating backwards
Count how many times each character of a string has been used
Find the most and least frequently used character
Count words
Find the most and least frequently words
Bubble sorting introduction
Bubble sorting application
Bubble sort backwards
Reorganize array elements in ascending and descending order using bubble sorting
Cocktail sorting
Add the left and right sort border to avoid unnecessary comparisons
Quick sorting introduction
Quick sorting demo
Counting sorting introduction
Deal with duplicated elements
Improve efficiency Part 1
Improve efficiency Part 2
Insertion sorting introduction
Insertion sort demo
Bucket sorting introduction
Bucket sorting demo
Selection sort introduction
Selection sort demo
Time and space complexity big O notation
Destructure array
Destructure object
Destructure string
Destructure number, boolean, null and undefined
Destructure function arguments
Linear structures and how they are stored in memory
Non-linear data structure
How to realize binary heap in JavaScript
Realize the binary heap structure using JavaScript codes
The heap sorting algorithm intro
The heap sorting algorithm demo
Introduction to the Observer pattern
Managing several page elements using the Observer pattern
Two-way data binding using the Observer pattern
The two shocking forms of FOR loop
Challenge iterating over the array backwards
Map basics
Iterate over MAP using FOR OF
SET basics
Application of SET
Introduction to Symbol
How to create a Symbol value
Symbol.for()
Use Symbol value as the property name
Well-known Symbol
The iteration protocol the iterable protocol and the iterator protocol
Create your own iterator
Generator
Application of generator
The next() method
yield
Introduction to Promise
The Promise constructor
The application of Promise
The then able object
Promise.resolve() and Promise.reject()
Limits of Promise.resolve() and Promise.reject()
Process several promises together .all(), .allSettled() and .race()
async await
async await supplement