1.1 āĻā§āϰā§āϏ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž
āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻŦā§āϏāĻŋāĻ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āĻĄāĻŋāĻāĻžāĻāύ āĻāϰā§āĻāĻŋ āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāϰ āĻŽā§āϞāĻŋāĻ āĻŦāĻŋāώāϝāĻŧāĻā§āϞāĻŋ āĻāĻžāύāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻŦā§āĨ¤ āĻāĻāĻŦāĻžāϰ āĻāĻĒāύāĻŋ āĻāĻāĻŋ āĻļā§āώ āĻāϰ⧠āĻĢā§āϞāϞā§, āĻāĻĒāύāĻŋ āĻāĻāĻāύ āĻĻāĻā§āώ āĻĢā§āϰāύā§āĻ-āĻāύā§āĻĄ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻšāĻāϝāĻŧāĻžāϰ āĻĻāĻŋāĻā§ āĻĒā§āϰāĻĨāĻŽ āĻĒāĻĻāĻā§āώā§āĻĒ āĻā§āϰāĻšāĻŖ āĻāϰāĻŦā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻļāĻŋāĻāϤ⧠āĻĒā§āϰāϏā§āϤā§āϤ? āϤāĻžāĻšāϞ⧠āĻāϞā§āύ āĻļā§āϰ⧠āĻāϰāĻž āϝāĻžāĻāĨ¤
1. Course Introduction
     1.1.  āĻā§āϰā§āϏ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž
     1.2.  Environment āϏā§āĻāĻāĻĒ
2. JavaScript Fundamentals
     2.1. āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻāĻŦāĻ āĻāύā§āĻāĻžāϰāĻĒā§āϰā§āĻāĻžāϰ
     2.2.  āĻāĻžāϏā§āĻ āĻāύ āĻāĻžāĻāĻŽ (JIT) āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ
     2.3. āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻā§āĻāĻŋāύ
     2.4.  āĻāĻŽā§āĻĒāĻžāĻāϞāĻŋāĻ āĻŦāύāĻžāĻŽ āĻĒāϞāĻŋāĻĢāĻŋāϞāĻŋāĻ
     2.5.  āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻāύāĻā§āĻā§āϏāĻ
     2.6.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āϏā§āĻā§āĻĒ
     2.7.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻšāĻāϏā§āĻāĻŋāĻ
     2.8.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻā§āϞā§āĻāĻžāϰ
     2.9.  āĻāϞ āĻŦā§āϝāĻžāĻ āĻāĻŦāĻ āĻšāĻžā§āĻžāϰ āĻ
āϰā§āĻĄāĻžāϰ āĻĢāĻžāĻāĻļāύ āĻāĻŋ ?
     2.10.  āĻĻāĻŋāϏ (this) āĻāĻŋāĻāϝāĻŧāĻžāϰā§āĻĄ
     2.11.  āĻāϞ āĻŦāĻžāĻ āĻā§āϝāĻžāϞ⧠āĻāĻŦāĻ āĻāϞ āĻŦāĻžāĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ
     2.12.  IIFE
     2.13.  āĻĒāĻŋāĻāϰ āĻĢāĻžāĻāĻļāύ (Pure Function)
     2.14.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ Use Strict
     2.15.  Call, Bind āĻāĻŦāĻ Apply
     2.16. āĻ
ā§āϝāĻžāϰ⧠āĻāĻŦāĻ āĻ
ā§āϝāĻžāϰ⧠āĻŽā§āĻĨāĻĄāϏ
3. Introduction to DOM
     3.1.  āĻāĻāύā§āĻĄā§ āĻāĻŦāĻ āĻĄāĻā§āĻŽā§āύā§āĻ āĻ
āĻŦāĻā§āĻā§āĻ
     3.2.  āĻŦā§āϏāĻŋāĻ āĻāĻŦāĻ Query āϏāĻŋāϞā§āĻā§āĻāϰā§āϏ
     3.3.  getElement āĻāĻŦāĻ Query āϏāĻŋāϞā§āĻā§āĻāϰā§āϏ āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ
     3.4.  āĻāĻŋāĻāĻžāĻŦā§ DOM elements āĻā§āϰāĻžāĻā§āϰā§āϏ āĻāĻŦāĻ āϤā§āϰ⧠āĻāϰāĻŦā§āύ?
     3.5.  How to insert the created elements?
     3.6.  āĻāĻĒāĻĄā§āĻ āĻāĻŦāĻ āϰāĻŋāĻŽā§āĻ DOM element
     3.7.  How to clone a node including its child elements?
     3.8.  Event capturing āĻāĻŦāĻ bubbling āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ
     3.9.  Events Delegation āĻāĻŦāĻ Propagation āĻāϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ
     3.10. āĻāύāĻĒā§āĻ āĻāϞāĻŋāĻŽā§āύā§āĻ āĻāĻŦāĻ āĻāĻā§āύā§āĻ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ
     3.11. āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāĻŦāĻ āĻā§āϝāĻžāϞāĻŋāĻĄā§āĻ āĻĢāϰā§āĻŽÂ āĻĄāĻžāĻāĻž
4. Client Storage
     4.1. āĻā§āĻāĻŋāĻ
     4.2. āϞā§āĻāĻžāϞ āϏā§āĻā§āϰā§āĻ
     4.3. āϏā§āĻļāύ āϏā§āĻā§āϰā§āĻ
5. Asynchronous in JavaScript
     5.1. āĻ
ā§āϝāĻžāϏāĻŋāĻā§āĻā§āϰā§āύāĻžāϏ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻŋ ?
     5.2. āĻāĻŋāĻāĻžāĻŦā§ āĻ
ā§āϝāĻžāϏāĻŋāĻā§āĻā§āϰā§āύāĻžāϏ āĻāĻžāĻāĻžāϏā§āĻā§ā§°āĻŋāĻĒā§āĻ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻŦā§āύ?
     5.3. AJAX
     5.4. Event loop (āĻāĻā§āύā§āĻ āϞā§āĻĒ) āĻāĻŋ?
6. Error handling in JavaScript
     6.1.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻāϰāϰ āĻšā§āϝāĻžāύā§āĻĄā§āϞ
     6.2.  āĻāύā§āĻĄāĻŋāĻļāύ āĻĻāĻŋā§ā§ āĻāϰāϰ āĻšā§āϝāĻžāύā§āĻĄā§āϞāĻŋāĻ
     6.3.  Try-Catch-Finally āĻĻāĻŋā§ā§ āĻāϰāϰ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ
     6.4.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻāϰāϰ āĻāĻŋāĻāĻžāĻŦā§ āĻĨā§āϰā§āĻ āĻāϰāĻŦ?
7. āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ OOP āĻĒāϰāĻŋāĻāĻŋāϤāĻŋ
     7.1.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻ
āĻŦāĻā§āĻā§āĻ āĻāϰāĻŋā§ā§āύā§āĻā§āĻĄ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻŋ?
     7.2.  āĻ
āĻŦāĻā§āĻā§āĻ āĻĒā§āϰāĻĒāĻžāϰā§āĻāĻŋ āĻāĻŦāĻ āĻŽā§āĻĨāĻĄ
     7.3.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻā§āϞāĻžāϏ āĻāĻŋ?
     7.4.  Factory Pattern āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āϞāĻžāϏ āϤā§āϰāĻŋ āĻāϰāĻž
     7.5.  Constructor Pattern āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻā§āϞāĻžāϏ āϤā§āϰāĻŋ
     7.6.  new āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻŋ? āĻāĻāĻž āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
     7.7.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ Abstraction
     7.8.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻĒā§āϰāĻžāĻāĻā§āĻ āĻĒā§āϰā§āĻĒāĻžāϰā§āĻāĻŋ āĻšāĻžāĻāĻĄ āĻāϰāĻž
     7.9.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ
     7.10.  āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ Getter āĻāĻŦāĻ Setter āĻāĻāĻ āĻāϰāϤ⧠āĻšā§?
     7.11.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻĒā§āϰā§āĻā§āĻāĻžāĻāĻĒ āĻāĻŦāĻ āĻĒā§āϰāĻā§āĻāĻĒāĻŋāĻā§āϝāĻžāϞ āĻāύāĻšā§āϰāĻŋāĻā§āϝāĻžāύā§āϏ
     7.12.  āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ āĻŽāĻžāϞā§āĻāĻŋ āϞā§āĻā§āϞ āĻāύāĻšā§āϰāĻŋāĻā§āϝāĻžāύā§āϏ
8. Introduce ES6 to ES10
     8.1.  ES6 āĻāĻŦāĻ āĻā§āϞāĻŋāĻ āĻāĻŋ ?
     8.2.  Let, Const, Literals āĻāĻŦāĻ Destructuring
     8.3.  Spread Operator, rest āĻāĻŦāĻ Default Parameter
     8.4.  āĻ
ā§āϝāĻžāϰ⧠āĻĢāĻžāĻāĻļāύ
     8.5.  find, fill
     8.6.  for of āĻāĻŦāĻ for in
     8.7.  Class (āĻā§āϞāĻžāϏ)
     8.8.  Symbols (āϏāĻŋāĻŽā§āĻŦāϞāϏ)
     8.9.  Iterators and Generators (āĻāĻāĻžāϰā§āĻāϰ āĻāĻŦāĻ āĻā§āύā§āϰā§āĻāϰ)
     8.10.  Promises āĻāĻŦāĻ async/await
     8.11.  Maps (āĻŽā§āϝāĻžāĻĒ) āĻāĻŦāĻ Sets (āϏā§āĻ)
     8.12.  Proxies āĻāĻŦāĻ Reflection
     8.13.  Number (āύāĻžāĻŽā§āĻŦāĻžāϰ) āĻāĻŦāĻ Math (āĻŽā§āϝāĻžāĻĨ)
     8.14.  Array āĻāĻŦāĻ Object (āĻ
āĻŦāĻā§āĻā§āĻ)
     8.15.  Modules (āĻŽāĻĄāĻŋāĻāϞ) āĻāĻŦāĻ String Padding
     8.16.  Exponential Operator āĻāĻŦāĻ Trailing Comma
     8.17.  Object.keys(), Object.values() and Object.entries()
     8.18.  Array.prototype.includes()
     8.19.  Array.flat() and Array.flatMap()
     8.20.  Global This
     8.21.  Optional chaining and Nullish Coalescing Operator