<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>JavaScript Codex</title>
    <link>https://javascriptcodex.com/</link>
    <atom:link href="https://javascriptcodex.com/rss.xml" rel="self" type="application/rss+xml" />
    <description>The illustrated JavaScript course — the language, the browser platform, and the modern tooling, explained with diagrams.</description>
    <language>en</language>
    <item>
      <title>An Introduction to JavaScript</title>
      <link>https://javascriptcodex.com/intro</link>
      <guid isPermaLink="true">https://javascriptcodex.com/intro</guid>
      <description>What JavaScript is, where it runs, what it can and can't do in a browser, and why it stayed the default language of the web.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Manuals and specifications</title>
      <link>https://javascriptcodex.com/manuals-specifications</link>
      <guid isPermaLink="true">https://javascriptcodex.com/manuals-specifications</guid>
      <description>Where to look things up once you outgrow a tutorial — the ECMAScript spec, MDN, and the compatibility tables that tell you what actually runs where.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Code editors</title>
      <link>https://javascriptcodex.com/code-editors</link>
      <guid isPermaLink="true">https://javascriptcodex.com/code-editors</guid>
      <description>How code editors split into full IDEs and fast lightweight editors, when to reach for each, and how to pick one without getting stuck.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Developer console</title>
      <link>https://javascriptcodex.com/devtools</link>
      <guid isPermaLink="true">https://javascriptcodex.com/devtools</guid>
      <description>How to open the browser's developer tools, read the errors it shows, and run JavaScript straight from the console.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Hello, world!</title>
      <link>https://javascriptcodex.com/hello-world</link>
      <guid isPermaLink="true">https://javascriptcodex.com/hello-world</guid>
      <description>How to attach JavaScript to a web page with the &lt;script&gt; tag — inline code, external files via src, and the attributes you can safely ignore.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Code structure</title>
      <link>https://javascriptcodex.com/structure</link>
      <guid isPermaLink="true">https://javascriptcodex.com/structure</guid>
      <description>How JavaScript is built from statements, why semicolons matter more than they look, and how to comment code without breaking it.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>The modern mode, &quot;use strict&quot;</title>
      <link>https://javascriptcodex.com/strict-mode</link>
      <guid isPermaLink="true">https://javascriptcodex.com/strict-mode</guid>
      <description>What &quot;use strict&quot; does, why it exists, where it must go, and when modern classes/modules make it automatic.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Variables</title>
      <link>https://javascriptcodex.com/variables</link>
      <guid isPermaLink="true">https://javascriptcodex.com/variables</guid>
      <description>How to store data in named variables with let and const — declaring, assigning, reassigning, copying, naming, and why const communicates intent.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Data types</title>
      <link>https://javascriptcodex.com/types</link>
      <guid isPermaLink="true">https://javascriptcodex.com/types</guid>
      <description>The eight data types JavaScript can store — number, bigint, string, boolean, null, undefined, symbol, object — and how to tell them apart with typeof.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Interaction: alert, prompt, confirm</title>
      <link>https://javascriptcodex.com/alert-prompt-confirm</link>
      <guid isPermaLink="true">https://javascriptcodex.com/alert-prompt-confirm</guid>
      <description>How the browser's three built-in dialogs — alert, prompt, and confirm — let a script talk to a person, what each one returns, and why they freeze the page.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Type Conversions</title>
      <link>https://javascriptcodex.com/type-conversions</link>
      <guid isPermaLink="true">https://javascriptcodex.com/type-conversions</guid>
      <description>How JavaScript turns values into strings, numbers, and booleans — the automatic conversions you rarely notice and the explicit ones you control.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Basic operators, maths</title>
      <link>https://javascriptcodex.com/operators</link>
      <guid isPermaLink="true">https://javascriptcodex.com/operators</guid>
      <description>How JavaScript's arithmetic, string, unary, assignment, increment, bitwise, and comma operators behave, plus the precedence rules that decide what runs first.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Comparisons</title>
      <link>https://javascriptcodex.com/comparison</link>
      <guid isPermaLink="true">https://javascriptcodex.com/comparison</guid>
      <description>How JavaScript compares values — booleans as results, lexicographic string order, type coercion in loose equality, strict equality, and the null/undefined traps.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Conditional branching: if, '?'</title>
      <link>https://javascriptcodex.com/ifelse</link>
      <guid isPermaLink="true">https://javascriptcodex.com/ifelse</guid>
      <description>How to branch your code with if, else, else if, and the ternary ? operator — plus the truthy/falsy rules that decide which branch runs.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Logical operators</title>
      <link>https://javascriptcodex.com/logical-operators</link>
      <guid isPermaLink="true">https://javascriptcodex.com/logical-operators</guid>
      <description>How ||, &amp;&amp;, and ! actually work in JavaScript — value-returning short-circuit evaluation, not just true/false.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Nullish coalescing operator '??'</title>
      <link>https://javascriptcodex.com/nullish-coalescing-operator</link>
      <guid isPermaLink="true">https://javascriptcodex.com/nullish-coalescing-operator</guid>
      <description>The ?? operator returns the first value that isn't null or undefined — how it works, why it beats || for defaults, and the precedence traps to watch for.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Loops: while and for</title>
      <link>https://javascriptcodex.com/while-for</link>
      <guid isPermaLink="true">https://javascriptcodex.com/while-for</guid>
      <description>How to repeat work in JavaScript with while, do..while, and for, plus break, continue, and labels for escaping nested loops.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>The &quot;switch&quot; statement</title>
      <link>https://javascriptcodex.com/switch</link>
      <guid isPermaLink="true">https://javascriptcodex.com/switch</guid>
      <description>How switch compares one value against many candidates with strict equality, why break matters, and how fall-through lets you group cases.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Functions</title>
      <link>https://javascriptcodex.com/function-basics</link>
      <guid isPermaLink="true">https://javascriptcodex.com/function-basics</guid>
      <description>How to declare functions, pass arguments, use default parameters, return values, and name them so the code reads like prose.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Function expressions</title>
      <link>https://javascriptcodex.com/function-expressions</link>
      <guid isPermaLink="true">https://javascriptcodex.com/function-expressions</guid>
      <description>A function in JavaScript is a value you can store, copy, and pass around — and where you write it decides whether it exists before the code runs or only once execution reaches it.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Arrow functions, the basics</title>
      <link>https://javascriptcodex.com/arrow-functions-basics</link>
      <guid isPermaLink="true">https://javascriptcodex.com/arrow-functions-basics</guid>
      <description>Arrow functions give you a compact syntax for writing functions, with an implicit return for one-liners and curly braces when you need a full body.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>JavaScript specials</title>
      <link>https://javascriptcodex.com/javascript-specials</link>
      <guid isPermaLink="true">https://javascriptcodex.com/javascript-specials</guid>
      <description>A fast, connected recap of the First Steps chapter — code structure, strict mode, variables, interaction, operators, loops, switch, and functions, with the subtle gotchas pulled to the front.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Debugging in the browser</title>
      <link>https://javascriptcodex.com/debugging-chrome</link>
      <guid isPermaLink="true">https://javascriptcodex.com/debugging-chrome</guid>
      <description>Use the browser's Sources panel — breakpoints, the debugger statement, the Scope/Call Stack/Watch panes, and step-by-step tracing — to see exactly what your code does while it runs.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Coding Style</title>
      <link>https://javascriptcodex.com/coding-style</link>
      <guid isPermaLink="true">https://javascriptcodex.com/coding-style</guid>
      <description>Practical style conventions — braces, line length, indentation, semicolons, nesting, function placement, style guides, and linters — that make JavaScript readable and less error-prone.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Comments</title>
      <link>https://javascriptcodex.com/comments</link>
      <guid isPermaLink="true">https://javascriptcodex.com/comments</guid>
      <description>How to comment well — strip out comments that narrate what the code does, keep the ones that explain architecture, function usage, and the reasons behind a design.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Ninja code</title>
      <link>https://javascriptcodex.com/ninja-code</link>
      <guid isPermaLink="true">https://javascriptcodex.com/ninja-code</guid>
      <description>A tongue-in-cheek tour of code-obfuscation 'tricks' that teaches, by inversion, exactly which habits make code unreadable — and what to do instead.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Automated testing with Mocha</title>
      <link>https://javascriptcodex.com/testing-mocha</link>
      <guid isPermaLink="true">https://javascriptcodex.com/testing-mocha</guid>
      <description>Learn Behavior Driven Development by building a pow function test-first with Mocha, Chai, describe/it blocks, nested groups, and setup hooks.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Polyfills and transpilers</title>
      <link>https://javascriptcodex.com/polyfills</link>
      <guid isPermaLink="true">https://javascriptcodex.com/polyfills</guid>
      <description>How transpilers rewrite modern syntax for old engines and polyfills add missing built-in functions, so you can write current code that still runs everywhere.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Objects</title>
      <link>https://javascriptcodex.com/object</link>
      <guid isPermaLink="true">https://javascriptcodex.com/object</guid>
      <description>Objects store keyed collections of data — how to create them, read and write properties with dot and bracket notation, use computed keys and shorthands, test for existence with in, and iterate with for..in.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Object references and copying</title>
      <link>https://javascriptcodex.com/object-copy</link>
      <guid isPermaLink="true">https://javascriptcodex.com/object-copy</guid>
      <description>Objects are held and copied by reference while primitives copy as whole values, which shapes how equality, cloning, and nested data behave.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Garbage collection</title>
      <link>https://javascriptcodex.com/garbage-collection</link>
      <guid isPermaLink="true">https://javascriptcodex.com/garbage-collection</guid>
      <description>How JavaScript automatically frees memory by tracking which values are still reachable from the roots, and how the mark-and-sweep collector works under the hood.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Object methods, &quot;this&quot;</title>
      <link>https://javascriptcodex.com/object-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/object-methods</guid>
      <description>How to give objects behavior with methods, and how the value of `this` is decided at call-time by whatever sits before the dot.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Constructor, operator &quot;new&quot;</title>
      <link>https://javascriptcodex.com/constructor-new</link>
      <guid isPermaLink="true">https://javascriptcodex.com/constructor-new</guid>
      <description>How constructor functions plus the new operator let you stamp out many similar objects from one blueprint.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Optional chaining '?.'</title>
      <link>https://javascriptcodex.com/optional-chaining</link>
      <guid isPermaLink="true">https://javascriptcodex.com/optional-chaining</guid>
      <description>Use ?. to read, call, and delete through nested values that might be null or undefined without crashing.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Symbol type</title>
      <link>https://javascriptcodex.com/symbol</link>
      <guid isPermaLink="true">https://javascriptcodex.com/symbol</guid>
      <description>Symbols are guaranteed-unique primitive keys used for collision-free hidden object properties and for hooking into JavaScript's built-in behaviors through well-known symbols.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Object to primitive conversion</title>
      <link>https://javascriptcodex.com/object-toprimitive</link>
      <guid isPermaLink="true">https://javascriptcodex.com/object-toprimitive</guid>
      <description>How JavaScript turns an object into a string or number when an operator demands a primitive, and the three methods you can define to control it.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Methods of primitives</title>
      <link>https://javascriptcodex.com/primitives-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/primitives-methods</guid>
      <description>Primitives stay lightweight, yet you can call methods on strings, numbers, booleans, symbols, and bigints because JavaScript wraps them in a temporary object just long enough to run the call.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Numbers</title>
      <link>https://javascriptcodex.com/number</link>
      <guid isPermaLink="true">https://javascriptcodex.com/number</guid>
      <description>Everything about regular JavaScript numbers: exponential and alternate-base syntax, rounding, the IEEE-754 precision trap, NaN/Infinity tests, and parsing numbers out of strings.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Strings</title>
      <link>https://javascriptcodex.com/string</link>
      <guid isPermaLink="true">https://javascriptcodex.com/string</guid>
      <description>How JavaScript stores text as UTF-16 strings, and the full toolkit for quoting, indexing, slicing, searching, and comparing them.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Arrays</title>
      <link>https://javascriptcodex.com/array</link>
      <guid isPermaLink="true">https://javascriptcodex.com/array</guid>
      <description>How JavaScript arrays really work — zero-based indexing and at(), the push/pop/shift/unshift toolbox, the object underneath, performance, looping, the writable length, and why you never compare arrays with ==.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Array methods</title>
      <link>https://javascriptcodex.com/array-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/array-methods</guid>
      <description>A tour of the array toolbox — adding, removing, searching, iterating, and transforming — with the mental models behind splice, map, filter, sort, and reduce.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Iterables</title>
      <link>https://javascriptcodex.com/iterable</link>
      <guid isPermaLink="true">https://javascriptcodex.com/iterable</guid>
      <description>How for..of really works — the Symbol.iterator protocol, writing your own iterators, the iterable vs array-like distinction, and Array.from to bridge them.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Map and Set</title>
      <link>https://javascriptcodex.com/map-set</link>
      <guid isPermaLink="true">https://javascriptcodex.com/map-set</guid>
      <description>Map stores keyed data with keys of any type, and Set stores unique values — both remember insertion order and beat plain objects and arrays at their respective jobs.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>WeakMap and WeakSet</title>
      <link>https://javascriptcodex.com/weakmap-weakset</link>
      <guid isPermaLink="true">https://javascriptcodex.com/weakmap-weakset</guid>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Object.keys, values, entries</title>
      <link>https://javascriptcodex.com/keys-values-entries</link>
      <guid isPermaLink="true">https://javascriptcodex.com/keys-values-entries</guid>
      <description>How to pull keys, values, and key/value pairs out of plain objects, and how to borrow array methods to transform an object into a new one.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Destructuring assignment</title>
      <link>https://javascriptcodex.com/destructuring-assignment</link>
      <guid isPermaLink="true">https://javascriptcodex.com/destructuring-assignment</guid>
      <description>Unpack arrays and objects into individual variables with defaults, renaming, rest patterns, nesting, and clean function parameters.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Date and time</title>
      <link>https://javascriptcodex.com/date</link>
      <guid isPermaLink="true">https://javascriptcodex.com/date</guid>
      <description>How the built-in Date object stores time as a millisecond timestamp, how to read and set its components, why months count from zero, autocorrection, date diffs, and honest benchmarking.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>JSON methods, toJSON</title>
      <link>https://javascriptcodex.com/json</link>
      <guid isPermaLink="true">https://javascriptcodex.com/json</guid>
      <description>How JSON.stringify and JSON.parse turn objects into portable text and back, plus the hooks — replacer, space, toJSON, and reviver — that let you shape the result.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Recursion and stack</title>
      <link>https://javascriptcodex.com/recursion</link>
      <guid isPermaLink="true">https://javascriptcodex.com/recursion</guid>
      <description>How a function that calls itself actually runs — the base case and recursive step, the execution-context stack that powers it, and the recursive data structures (trees, linked lists) that recursion was made for.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Rest parameters and spread syntax</title>
      <link>https://javascriptcodex.com/rest-parameters-spread</link>
      <guid isPermaLink="true">https://javascriptcodex.com/rest-parameters-spread</guid>
      <description>Gather any number of arguments into an array with rest parameters, and expand an iterable into a list with spread syntax — plus copying arrays and objects.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Variable scope, closure</title>
      <link>https://javascriptcodex.com/closure</link>
      <guid isPermaLink="true">https://javascriptcodex.com/closure</guid>
      <description>Every JavaScript function permanently remembers the scope it was born in, and that single rule — closure — explains how counters keep state, how variables stay alive after a function returns, and when memory gets freed.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>The old &quot;var&quot;</title>
      <link>https://javascriptcodex.com/var</link>
      <guid isPermaLink="true">https://javascriptcodex.com/var</guid>
      <description>How var differs from let and const — no block scope, tolerant redeclarations, and hoisting — plus the IIFE trick that older code used to fake privacy.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Global object</title>
      <link>https://javascriptcodex.com/global-object</link>
      <guid isPermaLink="true">https://javascriptcodex.com/global-object</guid>
      <description>The global object collects the built-in and environment-provided values available everywhere, reachable through window, global, or the portable globalThis.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Function object, NFE</title>
      <link>https://javascriptcodex.com/function-object</link>
      <guid isPermaLink="true">https://javascriptcodex.com/function-object</guid>
      <description>Functions are callable objects: read their name and length, hang your own properties on them, and use a named function expression to reference a function reliably from inside itself.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>The &quot;new Function&quot; syntax</title>
      <link>https://javascriptcodex.com/new-function</link>
      <guid isPermaLink="true">https://javascriptcodex.com/new-function</guid>
      <description>How new Function builds a function from a string at run time, and why its scope is deliberately global instead of the surrounding one.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Scheduling: setTimeout and setInterval</title>
      <link>https://javascriptcodex.com/settimeout-setinterval</link>
      <guid isPermaLink="true">https://javascriptcodex.com/settimeout-setinterval</guid>
      <description>How to defer and repeat function calls with setTimeout and setInterval, cancel them, and control timing precisely with nested timeouts.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Decorators and forwarding, call/apply</title>
      <link>https://javascriptcodex.com/call-apply-decorators</link>
      <guid isPermaLink="true">https://javascriptcodex.com/call-apply-decorators</guid>
      <description>How to wrap a function in another function that adds behavior — caching, logging, timing — using call, apply, and call forwarding without touching the original code.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Function binding</title>
      <link>https://javascriptcodex.com/bind</link>
      <guid isPermaLink="true">https://javascriptcodex.com/bind</guid>
      <description>Why methods forget their object when passed around as callbacks, and how bind pins this (and arguments) in place.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Arrow functions revisited</title>
      <link>https://javascriptcodex.com/arrow-functions</link>
      <guid isPermaLink="true">https://javascriptcodex.com/arrow-functions</guid>
      <description>Arrow functions have no this, no arguments, no super, and can't be called with new — which makes them ideal for small callbacks that borrow their surrounding context.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Property flags and descriptors</title>
      <link>https://javascriptcodex.com/property-descriptors</link>
      <guid isPermaLink="true">https://javascriptcodex.com/property-descriptors</guid>
      <description>Every object property carries three hidden flags — writable, enumerable, configurable — and this lesson shows how to read them, change them, and lock an object down entirely.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Property getters and setters</title>
      <link>https://javascriptcodex.com/property-accessors</link>
      <guid isPermaLink="true">https://javascriptcodex.com/property-accessors</guid>
      <description>How accessor properties let a getter and setter run behind a plain-looking property read or write, and why that indirection is so useful for validation and refactoring.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Prototypal inheritance</title>
      <link>https://javascriptcodex.com/prototype-inheritance</link>
      <guid isPermaLink="true">https://javascriptcodex.com/prototype-inheritance</guid>
      <description>How objects in JavaScript quietly fall back to a linked prototype object when a property is missing, and the rules that govern that lookup.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>F.prototype</title>
      <link>https://javascriptcodex.com/function-prototype</link>
      <guid isPermaLink="true">https://javascriptcodex.com/function-prototype</guid>
      <description>How the prototype property on a constructor function decides the [[Prototype]] of every object it builds with new.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Native prototypes</title>
      <link>https://javascriptcodex.com/native-prototypes</link>
      <guid isPermaLink="true">https://javascriptcodex.com/native-prototypes</guid>
      <description>How JavaScript's built-in objects store their methods on shared prototypes, and when it is safe to touch those prototypes yourself.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Prototype methods, objects without __proto__</title>
      <link>https://javascriptcodex.com/prototype-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/prototype-methods</guid>
      <description>The modern ways to read and set a prototype without __proto__, plus how prototype-less objects give you a safe dictionary for user-supplied keys.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Class basic syntax</title>
      <link>https://javascriptcodex.com/class</link>
      <guid isPermaLink="true">https://javascriptcodex.com/class</guid>
      <description>How the class keyword builds a constructor function plus prototype methods, and what it adds on top: strict mode, non-enumerable methods, getters/setters, computed names, and class fields.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Class inheritance</title>
      <link>https://javascriptcodex.com/class-inheritance</link>
      <guid isPermaLink="true">https://javascriptcodex.com/class-inheritance</guid>
      <description>How one class extends another with `extends`, how `super` calls parent methods and constructors, and the prototype and [[HomeObject]] machinery that makes it all work.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Static properties and methods</title>
      <link>https://javascriptcodex.com/static-properties-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/static-properties-methods</guid>
      <description>How static methods and properties attach to the class itself rather than its instances, why factory and comparison methods live there, and how statics are inherited through the class prototype chain.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Private and protected properties and methods</title>
      <link>https://javascriptcodex.com/private-protected-properties-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/private-protected-properties-methods</guid>
      <description>How to split an object into a public interface and hidden internals using protected `_` conventions and language-enforced private `#` fields.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Extending built-in classes</title>
      <link>https://javascriptcodex.com/extend-natives</link>
      <guid isPermaLink="true">https://javascriptcodex.com/extend-natives</guid>
      <description>You can extend built-ins like Array and Map with your own methods, control what their methods return using Symbol.species, and understand why built-in classes don't inherit each other's static methods.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Class checking: &quot;instanceof&quot;</title>
      <link>https://javascriptcodex.com/instanceof</link>
      <guid isPermaLink="true">https://javascriptcodex.com/instanceof</guid>
      <description>How `instanceof` walks the prototype chain to test class membership (including inheritance), how to override it with `Symbol.hasInstance`, and how `Object.prototype.toString` acts as a typeof on steroids.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Mixins</title>
      <link>https://javascriptcodex.com/mixins</link>
      <guid isPermaLink="true">https://javascriptcodex.com/mixins</guid>
      <description>How to bolt reusable behavior onto a class in JavaScript by copying methods into a prototype, since a class can only extend one parent.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Error handling, &quot;try...catch&quot;</title>
      <link>https://javascriptcodex.com/try-catch</link>
      <guid isPermaLink="true">https://javascriptcodex.com/try-catch</guid>
      <description>How try...catch intercepts runtime errors, how the error object and throw work, and the rethrowing and finally patterns that keep error handling honest.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Custom errors, extending Error</title>
      <link>https://javascriptcodex.com/custom-errors</link>
      <guid isPermaLink="true">https://javascriptcodex.com/custom-errors</guid>
      <description>Build your own error classes by extending Error, organize them into a hierarchy, check them with instanceof, and wrap low-level failures into higher-level errors.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Introduction: callbacks</title>
      <link>https://javascriptcodex.com/callbacks</link>
      <guid isPermaLink="true">https://javascriptcodex.com/callbacks</guid>
      <description>How callback-based asynchronous code works, how to report errors with error-first callbacks, and why deeply nested callbacks turn into the pyramid of doom.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Promise</title>
      <link>https://javascriptcodex.com/promise-basics</link>
      <guid isPermaLink="true">https://javascriptcodex.com/promise-basics</guid>
      <description>How a promise links producing code to consuming code through its pending/fulfilled/rejected state, and how then, catch, and finally subscribe to the outcome.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Promises chaining</title>
      <link>https://javascriptcodex.com/promise-chaining</link>
      <guid isPermaLink="true">https://javascriptcodex.com/promise-chaining</guid>
      <description>How to run asynchronous steps in sequence by returning values and promises from .then handlers, building a flat chain instead of nested callbacks.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Error handling with promises</title>
      <link>https://javascriptcodex.com/promise-error-handling</link>
      <guid isPermaLink="true">https://javascriptcodex.com/promise-error-handling</guid>
      <description>How rejections travel down a promise chain to the nearest .catch, why handlers get an invisible try..catch, how to rethrow, and how to trap unhandled rejections.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Promise API</title>
      <link>https://javascriptcodex.com/promise-api</link>
      <guid isPermaLink="true">https://javascriptcodex.com/promise-api</guid>
      <description>The six static Promise methods — all, allSettled, race, any, resolve, reject — and exactly when to reach for each.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Promisification</title>
      <link>https://javascriptcodex.com/promisify</link>
      <guid isPermaLink="true">https://javascriptcodex.com/promisify</guid>
      <description>How to wrap a callback-based function so it returns a promise instead, plus a reusable promisify helper that handles error-first callbacks with one or many result arguments.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Microtasks</title>
      <link>https://javascriptcodex.com/microtask-queue</link>
      <guid isPermaLink="true">https://javascriptcodex.com/microtask-queue</guid>
      <description>Why promise handlers always run after the current code finishes, how the microtask queue schedules them, and how that timing explains unhandled-rejection detection.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Async/await</title>
      <link>https://javascriptcodex.com/async-await</link>
      <guid isPermaLink="true">https://javascriptcodex.com/async-await</guid>
      <description>How the async and await keywords let you write promise-based code that reads top to bottom, plus error handling with try..catch and the edge cases worth knowing.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Generators</title>
      <link>https://javascriptcodex.com/generators</link>
      <guid isPermaLink="true">https://javascriptcodex.com/generators</guid>
      <description>How generator functions pause and resume with yield, act as iterables, compose with yield*, and exchange values and errors with the calling code.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Async iteration and generators</title>
      <link>https://javascriptcodex.com/async-iterators-generators</link>
      <guid isPermaLink="true">https://javascriptcodex.com/async-iterators-generators</guid>
      <description>Iterate over data that arrives over time using Symbol.asyncIterator, async generators, and for await..of — with a real paginated-fetch example.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Modules, introduction</title>
      <link>https://javascriptcodex.com/modules-intro</link>
      <guid isPermaLink="true">https://javascriptcodex.com/modules-intro</guid>
      <description>Modules let you split a program across files that share functionality through export and import, each with its own scope, strict mode, and one-time evaluation.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Export and Import</title>
      <link>https://javascriptcodex.com/import-export</link>
      <guid isPermaLink="true">https://javascriptcodex.com/import-export</guid>
      <description>A tour of every export and import form — inline and standalone exports, renaming with as, default exports, re-exports, and where these statements are allowed to live.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Dynamic imports</title>
      <link>https://javascriptcodex.com/modules-dynamic-imports</link>
      <guid isPermaLink="true">https://javascriptcodex.com/modules-dynamic-imports</guid>
      <description>Load modules on demand with the import() expression, which returns a promise for the module object and works from anywhere in your code.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Proxy and Reflect</title>
      <link>https://javascriptcodex.com/proxy</link>
      <guid isPermaLink="true">https://javascriptcodex.com/proxy</guid>
      <description>How a Proxy wraps an object and intercepts fundamental operations like reads, writes, and function calls, and how Reflect lets each trap forward the operation faithfully.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Eval: run a code string</title>
      <link>https://javascriptcodex.com/eval</link>
      <guid isPermaLink="true">https://javascriptcodex.com/eval</guid>
      <description>eval runs a string as live JavaScript, returns the last statement's value, and — in a way that's usually best avoided — can read and write the surrounding scope.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Currying</title>
      <link>https://javascriptcodex.com/currying-partials</link>
      <guid isPermaLink="true">https://javascriptcodex.com/currying-partials</guid>
      <description>Turning f(a, b, c) into f(a)(b)(c) so you can lock in arguments early and spin off tidy specialized functions.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Reference Type</title>
      <link>https://javascriptcodex.com/reference-type</link>
      <guid isPermaLink="true">https://javascriptcodex.com/reference-type</guid>
      <description>The dot operator returns a hidden Reference Type value that carries this into the call — pull the method off first and this evaporates.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>BigInt</title>
      <link>https://javascriptcodex.com/bigint</link>
      <guid isPermaLink="true">https://javascriptcodex.com/bigint</guid>
      <description>BigInt is a numeric type for integers of any size, created with an n suffix or the BigInt() function, that behaves like a number but never mixes with one silently.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Unicode, String internals</title>
      <link>https://javascriptcodex.com/unicode</link>
      <guid isPermaLink="true">https://javascriptcodex.com/unicode</guid>
      <description>JavaScript strings are UTF-16, so rare characters take two code units (surrogate pairs) and visually identical letters can differ byte-for-byte until you normalize them.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>WeakRef and FinalizationRegistry</title>
      <link>https://javascriptcodex.com/weakref-finalizationregistry</link>
      <guid isPermaLink="true">https://javascriptcodex.com/weakref-finalizationregistry</guid>
      <description>How WeakRef holds an object without keeping it alive, and how FinalizationRegistry runs a callback after the garbage collector reclaims it.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Immutable Array Methods</title>
      <link>https://javascriptcodex.com/immutable-array-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/immutable-array-methods</guid>
      <description>The non-mutating twins of sort, reverse, and splice — toSorted, toReversed, toSpliced, with, plus findLast and findLastIndex — and why returning a fresh copy makes state predictable.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Grouping with Object.groupBy &amp; Map.groupBy</title>
      <link>https://javascriptcodex.com/object-and-map-grouping</link>
      <guid isPermaLink="true">https://javascriptcodex.com/object-and-map-grouping</guid>
      <description>Sort any iterable into buckets by a computed key in one call — Object.groupBy for string keys, Map.groupBy for object keys — and retire the hand-rolled reduce boilerplate.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Set Methods</title>
      <link>https://javascriptcodex.com/set-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/set-methods</guid>
      <description>The built-in Set now speaks set algebra directly — union, intersection, difference, symmetricDifference, and three containment checks — so you can drop the hand-rolled loops and the Lodash helpers.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Iterator Helpers</title>
      <link>https://javascriptcodex.com/iterator-helpers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/iterator-helpers</guid>
      <description>Chainable map, filter, take, drop and friends that live on Iterator.prototype and pull one value at a time — lazy pipelines that never build intermediate arrays and can bound an infinite generator.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Array.fromAsync</title>
      <link>https://javascriptcodex.com/array-from-async</link>
      <guid isPermaLink="true">https://javascriptcodex.com/array-from-async</guid>
      <description>Build an array from an async iterable or an iterable of promises, awaiting each element in sequence — the clean way to drain an async generator or paginate an API into one list.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Promise.withResolvers</title>
      <link>https://javascriptcodex.com/promise-with-resolvers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/promise-with-resolvers</guid>
      <description>One call hands you a promise plus its resolve and reject functions, so you can settle a promise from outside its constructor without the old outer-variable dance.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Error Cause &amp; AggregateError</title>
      <link>https://javascriptcodex.com/error-cause-and-aggregate</link>
      <guid isPermaLink="true">https://javascriptcodex.com/error-cause-and-aggregate</guid>
      <description>Chain errors with the cause option so a boundary can add context without losing the root failure, and bundle many failures into one AggregateError the way Promise.any does.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Logical Assignment, Object.hasOwn &amp; structuredClone</title>
      <link>https://javascriptcodex.com/logical-assignment-and-clone</link>
      <guid isPermaLink="true">https://javascriptcodex.com/logical-assignment-and-clone</guid>
      <description>Three sharp modern tools: the ??=, ||= and &amp;&amp;= assignment operators, Object.hasOwn for safe key checks, and structuredClone for real deep copies.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Decorators &amp; Static Initialization Blocks</title>
      <link>https://javascriptcodex.com/decorators-and-static-blocks</link>
      <guid isPermaLink="true">https://javascriptcodex.com/decorators-and-static-blocks</guid>
      <description>How Stage 3 class decorators wrap classes, methods, fields, and accessors through a (value, context) contract that still needs a build step, and how ES2022 static blocks run one-time setup at class definition.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>RegExp v and d Flags</title>
      <link>https://javascriptcodex.com/regexp-v-and-d-flags</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-v-and-d-flags</guid>
      <description>Two modern regex flags: v upgrades character classes with real set algebra and multi-character string sets, and d reports the exact start and end index of every match and capture group.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>The Temporal API</title>
      <link>https://javascriptcodex.com/temporal</link>
      <guid isPermaLink="true">https://javascriptcodex.com/temporal</guid>
      <description>A tour of Temporal — the immutable, time-zone-aware replacement for Date — covering Instant, ZonedDateTime, the Plain types, Duration, arithmetic, rounding, and its real-world support status.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Internationalization with Intl</title>
      <link>https://javascriptcodex.com/intl</link>
      <guid isPermaLink="true">https://javascriptcodex.com/intl</guid>
      <description>Locale-aware dates, numbers, currencies, lists, plurals, sorting, and text segmentation with the built-in Intl namespace — no libraries required.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>TypeScript for JavaScript Developers</title>
      <link>https://javascriptcodex.com/typescript-for-js-developers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/typescript-for-js-developers</guid>
      <description>A JavaScript developer's on-ramp to TypeScript: annotations, interfaces, unions, narrowing, and generics as a compile-time-only layer that erases before your code ever runs.</description>
      <category>Part 1: Core JavaScript</category>
    </item>
    <item>
      <title>Browser environment, specs</title>
      <link>https://javascriptcodex.com/browser-environment</link>
      <guid isPermaLink="true">https://javascriptcodex.com/browser-environment</guid>
      <description>The browser wraps the JavaScript language core with a host environment — window, the DOM, and the BOM — each governed by its own specification.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>DOM tree</title>
      <link>https://javascriptcodex.com/dom-nodes</link>
      <guid isPermaLink="true">https://javascriptcodex.com/dom-nodes</guid>
      <description>How the browser turns HTML into a live tree of node objects that JavaScript can read and change.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Walking the DOM</title>
      <link>https://javascriptcodex.com/dom-navigation</link>
      <guid isPermaLink="true">https://javascriptcodex.com/dom-navigation</guid>
      <description>How to move between DOM nodes using navigation properties for parents, children, and siblings, plus element-only shortcuts and table-specific links.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Searching: getElement*, querySelector*</title>
      <link>https://javascriptcodex.com/searching-elements-dom</link>
      <guid isPermaLink="true">https://javascriptcodex.com/searching-elements-dom</guid>
      <description>How to reach any element on a page by id, CSS selector, tag, class, or name, plus matches, closest, and the difference between live and static collections.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Node properties: type, tag and contents</title>
      <link>https://javascriptcodex.com/basic-dom-node-properties</link>
      <guid isPermaLink="true">https://javascriptcodex.com/basic-dom-node-properties</guid>
      <description>Every DOM node is a JavaScript object from a class hierarchy, and this chapter maps the classes and the everyday properties for reading a node's type, tag, and contents.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Attributes and properties</title>
      <link>https://javascriptcodex.com/dom-attributes-and-properties</link>
      <guid isPermaLink="true">https://javascriptcodex.com/dom-attributes-and-properties</guid>
      <description>HTML attributes and DOM properties look like two names for the same thing, but they live in different places, carry different types, and sync in ways that trip people up — this chapter untangles them.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Modifying the document</title>
      <link>https://javascriptcodex.com/modifying-document</link>
      <guid isPermaLink="true">https://javascriptcodex.com/modifying-document</guid>
      <description>Create, insert, move, clone, and remove DOM nodes to build live, dynamic pages.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Styles and classes</title>
      <link>https://javascriptcodex.com/styles-and-classes</link>
      <guid isPermaLink="true">https://javascriptcodex.com/styles-and-classes</guid>
      <description>JavaScript can reach an element's look two ways — through its CSS classes or through inline styles — and knowing which to reach for (and how to read the value back) keeps your UI code clean.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Element size and scrolling</title>
      <link>https://javascriptcodex.com/size-and-scroll</link>
      <guid isPermaLink="true">https://javascriptcodex.com/size-and-scroll</guid>
      <description>How to read an element's width, height, borders, padding, and scroll offsets in pixels using the offset/client/scroll geometry properties — and why CSS values are the wrong tool for the job.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Window sizes and scrolling</title>
      <link>https://javascriptcodex.com/size-and-scroll-window</link>
      <guid isPermaLink="true">https://javascriptcodex.com/size-and-scroll-window</guid>
      <description>How to read the window's visible size, the full document height, and the current scroll position — plus the methods that move the page, and the historical quirks that make you take a Math.max of six properties.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Coordinates</title>
      <link>https://javascriptcodex.com/coordinates</link>
      <guid isPermaLink="true">https://javascriptcodex.com/coordinates</guid>
      <description>The two coordinate systems on a web page — window-relative and document-relative — how getBoundingClientRect reports them, and how to convert between them so a tooltip stays glued to its element whether the page scrolls or not.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Introduction to browser events</title>
      <link>https://javascriptcodex.com/introduction-browser-events</link>
      <guid isPermaLink="true">https://javascriptcodex.com/introduction-browser-events</guid>
      <description>How the browser turns user actions into events, and the three ways to attach handler code that reacts to them.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Bubbling and capturing</title>
      <link>https://javascriptcodex.com/bubbling-and-capturing</link>
      <guid isPermaLink="true">https://javascriptcodex.com/bubbling-and-capturing</guid>
      <description>An event on an element travels down through its ancestors and back up through them, and understanding that journey is what lets one handler serve a whole subtree.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Event delegation</title>
      <link>https://javascriptcodex.com/event-delegation</link>
      <guid isPermaLink="true">https://javascriptcodex.com/event-delegation</guid>
      <description>Instead of wiring a handler onto every element, put one handler on a shared ancestor and let bubbling bring the events to you.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Browser default actions</title>
      <link>https://javascriptcodex.com/default-browser-action</link>
      <guid isPermaLink="true">https://javascriptcodex.com/default-browser-action</guid>
      <description>How the browser reacts to events on its own, and how to cancel that behavior with preventDefault, return false, passive handlers, and defaultPrevented.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Dispatching custom events</title>
      <link>https://javascriptcodex.com/dispatch-events</link>
      <guid isPermaLink="true">https://javascriptcodex.com/dispatch-events</guid>
      <description>Create and fire your own events from JavaScript with Event, CustomEvent, and dispatchEvent, pass data via detail, cancel with preventDefault, and understand why nested events run synchronously.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Mouse events</title>
      <link>https://javascriptcodex.com/mouse-events-basics</link>
      <guid isPermaLink="true">https://javascriptcodex.com/mouse-events-basics</guid>
      <description>The mouse event family — their fixed firing order, the button and modifier-key properties every event carries, the two coordinate systems, and how to stop mousedown from selecting text.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Moving the mouse: mouseover/out, mouseenter/leave</title>
      <link>https://javascriptcodex.com/mousemove-mouseover-mouseout-mouseenter-mouseleave</link>
      <guid isPermaLink="true">https://javascriptcodex.com/mousemove-mouseover-mouseout-mouseenter-mouseleave</guid>
      <description>How mouseover/out, mousemove, and mouseenter/leave differ, why bubbling and relatedTarget matter, and how to delegate hover handling across many elements.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Drag'n'Drop with mouse events</title>
      <link>https://javascriptcodex.com/mouse-drag-and-drop</link>
      <guid isPermaLink="true">https://javascriptcodex.com/mouse-drag-and-drop</guid>
      <description>Build drag'n'drop from scratch with mousedown/mousemove/mouseup, keep the pointer's grab offset, and detect drop targets under the cursor with elementFromPoint.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Pointer events</title>
      <link>https://javascriptcodex.com/pointer-events</link>
      <guid isPermaLink="true">https://javascriptcodex.com/pointer-events</guid>
      <description>One unified event model that handles mouse, touch, and pen input, with multi-touch, device pressure, and pointer capturing built in.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Keyboard: keydown and keyup</title>
      <link>https://javascriptcodex.com/keyboard-events</link>
      <guid isPermaLink="true">https://javascriptcodex.com/keyboard-events</guid>
      <description>How keydown and keyup work, the difference between event.key and event.code, auto-repeat, default actions, and why keyboard events alone can't reliably track text input.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Scrolling</title>
      <link>https://javascriptcodex.com/onscroll</link>
      <guid isPermaLink="true">https://javascriptcodex.com/onscroll</guid>
      <description>The scroll event lets you react to page and element scrolling, why you can't cancel it after the fact, and how to block scrolling at its real source instead.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Form properties and methods</title>
      <link>https://javascriptcodex.com/form-elements</link>
      <guid isPermaLink="true">https://javascriptcodex.com/form-elements</guid>
      <description>How to reach forms and their controls through document.forms and form.elements, and how to read and set values on input, textarea, select, and option.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Focusing: focus/blur</title>
      <link>https://javascriptcodex.com/focus-blur</link>
      <guid isPermaLink="true">https://javascriptcodex.com/focus-blur</guid>
      <description>How elements gain and lose focus, why the focus and blur events behave differently from most others, and how tabindex, capturing, and focusin/focusout let you work around their quirks.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Events: change, input, cut, copy, paste</title>
      <link>https://javascriptcodex.com/events-change-input</link>
      <guid isPermaLink="true">https://javascriptcodex.com/events-change-input</guid>
      <description>The events that fire when form data changes — change on commit, input on every keystroke or paste, and the clipboard trio cut/copy/paste — plus why the clipboard sits behind a wall of safety restrictions.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Forms: event and method submit</title>
      <link>https://javascriptcodex.com/forms-submit</link>
      <guid isPermaLink="true">https://javascriptcodex.com/forms-submit</guid>
      <description>How the submit event lets you validate or cancel a form before it leaves the page, and how form.submit() sends a form from code without firing that event.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Page: DOMContentLoaded, load, beforeunload, unload</title>
      <link>https://javascriptcodex.com/onload-ondomcontentloaded</link>
      <guid isPermaLink="true">https://javascriptcodex.com/onload-ondomcontentloaded</guid>
      <description>How a page's lifecycle unfolds through DOMContentLoaded, load, beforeunload, and unload, and how to hook into each stage reliably.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Scripts: async, defer</title>
      <link>https://javascriptcodex.com/script-async-defer</link>
      <guid isPermaLink="true">https://javascriptcodex.com/script-async-defer</guid>
      <description>How defer and async change when the browser downloads and runs your scripts, and how to pick the right one.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Resource loading: onload and onerror</title>
      <link>https://javascriptcodex.com/onload-onerror</link>
      <guid isPermaLink="true">https://javascriptcodex.com/onload-onerror</guid>
      <description>How to know when a script, image, or other external resource finishes loading or fails, and how cross-origin rules limit what errors you can see.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Mutation observer</title>
      <link>https://javascriptcodex.com/mutation-observer</link>
      <guid isPermaLink="true">https://javascriptcodex.com/mutation-observer</guid>
      <description>MutationObserver watches a DOM node and fires a callback whenever its children, attributes, or text change — ideal for reacting to markup you don't control.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Selection and Range</title>
      <link>https://javascriptcodex.com/selection-range</link>
      <guid isPermaLink="true">https://javascriptcodex.com/selection-range</guid>
      <description>How Range marks a pair of boundary points in the DOM, how Selection turns ranges into a visible highlight, and the simpler text-only selection API for input and textarea.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Event loop: microtasks and macrotasks</title>
      <link>https://javascriptcodex.com/event-loop</link>
      <guid isPermaLink="true">https://javascriptcodex.com/event-loop</guid>
      <description>How the browser (and Node.js) schedules your code: the endless task loop, why rendering waits for your task to finish, and the strict order in which macrotasks and microtasks run.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Observing the Page: Intersection, Resize &amp; Performance Observers</title>
      <link>https://javascriptcodex.com/observer-apis</link>
      <guid isPermaLink="true">https://javascriptcodex.com/observer-apis</guid>
      <description>Three browser observers — IntersectionObserver, ResizeObserver and PerformanceObserver — that hand you batched, off-the-main-path notifications instead of the scroll and resize event storms they replaced.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Native Dialogs &amp; the Popover API</title>
      <link>https://javascriptcodex.com/dialog-and-popover</link>
      <guid isPermaLink="true">https://javascriptcodex.com/dialog-and-popover</guid>
      <description>Build modals, menus, and popovers with the platform's own top-layer primitives — the dialog element and the Popover API — instead of hand-rolling overlays, z-index stacks, and focus traps.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>The View Transitions API</title>
      <link>https://javascriptcodex.com/view-transitions</link>
      <guid isPermaLink="true">https://javascriptcodex.com/view-transitions</guid>
      <description>Animate DOM state changes and page navigations natively — the browser snapshots the old and new states and cross-fades or morphs between them, so you delete your FLIP and clone-node code.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>The Web Animations API</title>
      <link>https://javascriptcodex.com/web-animations-api</link>
      <guid isPermaLink="true">https://javascriptcodex.com/web-animations-api</guid>
      <description>Drive animations from JavaScript with element.animate — a real Animation object you can play, pause, reverse, seek, rescale in speed, and await, plus a look at scroll-driven timelines.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>The Navigation API</title>
      <link>https://javascriptcodex.com/navigation-api</link>
      <guid isPermaLink="true">https://javascriptcodex.com/navigation-api</guid>
      <description>A single navigate event that catches every same-origin navigation — links, back/forward, and programmatic calls — plus intercept() to render it yourself without a full page load.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Accessibility &amp; ARIA</title>
      <link>https://javascriptcodex.com/accessibility-and-aria</link>
      <guid isPermaLink="true">https://javascriptcodex.com/accessibility-and-aria</guid>
      <description>How assistive technology reads your page through the accessibility tree, why semantic HTML beats ARIA, and how to get names, live regions, keyboard focus, and motion preferences right.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Clipboard &amp; Native Drag-and-Drop</title>
      <link>https://javascriptcodex.com/clipboard-and-drag-drop</link>
      <guid isPermaLink="true">https://javascriptcodex.com/clipboard-and-drag-drop</guid>
      <description>Copy and paste with the async Clipboard API — text, rich HTML, and images through the permission gate — then move data with native HTML5 drag-and-drop, from the draggable attribute to DataTransfer and the dragover preventDefault trick.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Device &amp; Capability APIs</title>
      <link>https://javascriptcodex.com/device-and-capability-apis</link>
      <guid isPermaLink="true">https://javascriptcodex.com/device-and-capability-apis</guid>
      <description>How to ask the browser for powerful capabilities the respectful way — checking permission state first, gating on a real user gesture, feature-detecting before you call, and scheduling non-urgent work for idle time.</description>
      <category>Part 2: The Browser Platform</category>
    </item>
    <item>
      <title>Popups and window methods</title>
      <link>https://javascriptcodex.com/popup-windows</link>
      <guid isPermaLink="true">https://javascriptcodex.com/popup-windows</guid>
      <description>How to open, control, close, move, and communicate with popup windows using window.open and the related window methods, plus the browser rules that limit what you can do.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Cross-window communication</title>
      <link>https://javascriptcodex.com/cross-window-communication</link>
      <guid isPermaLink="true">https://javascriptcodex.com/cross-window-communication</guid>
      <description>How the Same Origin policy walls off windows and frames from each other, and the sanctioned escape hatches — document.domain, sandbox, and postMessage.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>The clickjacking attack</title>
      <link>https://javascriptcodex.com/clickjacking</link>
      <guid isPermaLink="true">https://javascriptcodex.com/clickjacking</guid>
      <description>How clickjacking tricks a user into clicking a hidden victim button, and the layered defenses — framebusting, sandbox, X-Frame-Options, covering divs, and SameSite cookies — that stop it.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Web Security in Depth</title>
      <link>https://javascriptcodex.com/security-in-depth</link>
      <guid isPermaLink="true">https://javascriptcodex.com/security-in-depth</guid>
      <description>A production-grade tour of browser security: XSS and its defenses, Content Security Policy, Trusted Types, CSRF, Subresource Integrity, CORS at the trust level, and modern auth with passkeys and OAuth2.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>ArrayBuffer, binary arrays</title>
      <link>https://javascriptcodex.com/arraybuffer-binary-arrays</link>
      <guid isPermaLink="true">https://javascriptcodex.com/arraybuffer-binary-arrays</guid>
      <description>How JavaScript models raw bytes: ArrayBuffer as the memory, typed arrays and DataView as the views that interpret it.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>TextDecoder and TextEncoder</title>
      <link>https://javascriptcodex.com/text-decoder</link>
      <guid isPermaLink="true">https://javascriptcodex.com/text-decoder</guid>
      <description>Turn raw bytes into JavaScript strings with TextDecoder, and strings back into UTF-8 bytes with TextEncoder.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Blob</title>
      <link>https://javascriptcodex.com/blob</link>
      <guid isPermaLink="true">https://javascriptcodex.com/blob</guid>
      <description>Blob is binary data with a type attached — the object the browser uses for downloads, uploads, images, and object URLs.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>File and FileReader</title>
      <link>https://javascriptcodex.com/file</link>
      <guid isPermaLink="true">https://javascriptcodex.com/file</guid>
      <description>A File is a Blob with a name and modification date, and FileReader pulls its contents into a string, ArrayBuffer, or data URL through events.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Fetch</title>
      <link>https://javascriptcodex.com/fetch</link>
      <guid isPermaLink="true">https://javascriptcodex.com/fetch</guid>
      <description>fetch() sends a network request and hands back a promise that resolves in two stages — first the response headers, then the body you read with a second method call.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>FormData</title>
      <link>https://javascriptcodex.com/formdata</link>
      <guid isPermaLink="true">https://javascriptcodex.com/formdata</guid>
      <description>Use the FormData object to capture form fields, files, and Blobs, then POST them with fetch as multipart/form-data.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Fetch: Download progress</title>
      <link>https://javascriptcodex.com/fetch-progress</link>
      <guid isPermaLink="true">https://javascriptcodex.com/fetch-progress</guid>
      <description>Read a fetch response chunk-by-chunk through response.body to track how many bytes have downloaded and show real progress.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Fetch: Abort</title>
      <link>https://javascriptcodex.com/fetch-abort</link>
      <guid isPermaLink="true">https://javascriptcodex.com/fetch-abort</guid>
      <description>Use AbortController to cancel an in-flight fetch (or any async task) by wiring its signal into fetch and calling abort() when the work is no longer needed.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Fetch: Cross-Origin Requests</title>
      <link>https://javascriptcodex.com/fetch-crossorigin</link>
      <guid isPermaLink="true">https://javascriptcodex.com/fetch-crossorigin</guid>
      <description>How the browser guards cross-origin fetch requests with CORS — origins, safe requests, preflight, response headers, and credentials.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Fetch API</title>
      <link>https://javascriptcodex.com/fetch-api</link>
      <guid isPermaLink="true">https://javascriptcodex.com/fetch-api</guid>
      <description>A tour of every fetch option beyond method/headers/body — referrer, mode, credentials, cache, redirect, integrity, keepalive — with what each one controls and when you'd reach for it.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>URL objects</title>
      <link>https://javascriptcodex.com/url</link>
      <guid isPermaLink="true">https://javascriptcodex.com/url</guid>
      <description>Use the built-in URL class to build, parse, and safely encode web addresses instead of juggling raw strings.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>XMLHttpRequest</title>
      <link>https://javascriptcodex.com/xmlhttprequest</link>
      <guid isPermaLink="true">https://javascriptcodex.com/xmlhttprequest</guid>
      <description>XMLHttpRequest is the older browser API for HTTP requests — event-driven, capable of tracking upload progress, and still worth knowing where fetch falls short.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Resumable file upload</title>
      <link>https://javascriptcodex.com/resume-upload</link>
      <guid isPermaLink="true">https://javascriptcodex.com/resume-upload</guid>
      <description>Build resumable file uploads by asking the server how many bytes it already has, then slicing the file and sending only the rest.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Long polling</title>
      <link>https://javascriptcodex.com/long-polling</link>
      <guid isPermaLink="true">https://javascriptcodex.com/long-polling</guid>
      <description>Long polling keeps a persistent link to the server by holding each request open until a message is ready, giving you near-instant delivery with plain HTTP and no special protocol.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>WebSocket</title>
      <link>https://javascriptcodex.com/websocket</link>
      <guid isPermaLink="true">https://javascriptcodex.com/websocket</guid>
      <description>How WebSocket opens a persistent two-way channel between browser and server, from the HTTP handshake to frames, backpressure, close codes, and a working chat.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Server Sent Events</title>
      <link>https://javascriptcodex.com/server-sent-events</link>
      <guid isPermaLink="true">https://javascriptcodex.com/server-sent-events</guid>
      <description>EventSource opens a persistent HTTP connection so the server can stream text events to the browser, with built-in auto-reconnect, message ids, and custom event types.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>The Streams API</title>
      <link>https://javascriptcodex.com/streams-api</link>
      <guid isPermaLink="true">https://javascriptcodex.com/streams-api</guid>
      <description>Process data piece by piece with readable, writable, and transform streams — reading chunk by chunk, piping through processing chains, and letting a slow consumer push back on a fast producer.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>WebRTC &amp; WebTransport</title>
      <link>https://javascriptcodex.com/realtime-transports</link>
      <guid isPermaLink="true">https://javascriptcodex.com/realtime-transports</guid>
      <description>Two low-latency transports beyond WebSocket: WebRTC for peer-to-peer media and data with NAT traversal, and WebTransport for multiplexed client-server messaging over HTTP/3.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Web Workers</title>
      <link>https://javascriptcodex.com/web-workers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/web-workers</guid>
      <description>How Web Workers run JavaScript on a real background thread, communicate through postMessage, copy data with structured clone, and hand off buffers with zero-copy transferables.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>SharedArrayBuffer &amp; Atomics</title>
      <link>https://javascriptcodex.com/shared-memory-and-atomics</link>
      <guid isPermaLink="true">https://javascriptcodex.com/shared-memory-and-atomics</guid>
      <description>How SharedArrayBuffer lets multiple threads read and write the same memory, why it needs cross-origin isolation, and how Atomics gives you race-free updates and wait/notify coordination.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Service Workers &amp; PWAs</title>
      <link>https://javascriptcodex.com/service-workers-and-pwa</link>
      <guid isPermaLink="true">https://javascriptcodex.com/service-workers-and-pwa</guid>
      <description>How a service worker acts as a programmable network proxy to make web apps installable and offline-first, covering the lifecycle, the Cache API and caching strategies, the manifest, and a look at Background Sync and Push.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Cookies, document.cookie</title>
      <link>https://javascriptcodex.com/cookie</link>
      <guid isPermaLink="true">https://javascriptcodex.com/cookie</guid>
      <description>How cookies flow between server and browser, how to read and write them with document.cookie, and what each attribute (domain, path, expires, secure, samesite, httpOnly) actually controls.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>LocalStorage, sessionStorage</title>
      <link>https://javascriptcodex.com/localstorage</link>
      <guid isPermaLink="true">https://javascriptcodex.com/localstorage</guid>
      <description>How localStorage and sessionStorage keep key/value strings in the browser, how their scope and lifetime differ, and how the storage event lets same-origin windows talk to each other.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>IndexedDB</title>
      <link>https://javascriptcodex.com/indexeddb</link>
      <guid isPermaLink="true">https://javascriptcodex.com/indexeddb</guid>
      <description>A deep, example-driven tour of IndexedDB: opening and versioning databases, object stores, transactions, indexes, cursors, and a promise wrapper for clean async code.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Bezier curve</title>
      <link>https://javascriptcodex.com/bezier-curve</link>
      <guid isPermaLink="true">https://javascriptcodex.com/bezier-curve</guid>
      <description>Bezier curves are shapes defined by control points; De Casteljau's algorithm builds them by repeated linear interpolation, and a matching polynomial formula describes the same curve.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>CSS-animations</title>
      <link>https://javascriptcodex.com/css-animations</link>
      <guid isPermaLink="true">https://javascriptcodex.com/css-animations</guid>
      <description>Animate CSS properties with transitions, timing functions, steps, and @keyframes, then hook into transitionend and lean on transform/opacity for smooth performance.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>JavaScript animations</title>
      <link>https://javascriptcodex.com/js-animation</link>
      <guid isPermaLink="true">https://javascriptcodex.com/js-animation</guid>
      <description>Build smooth, fully controllable JavaScript animations with requestAnimationFrame, a reusable animate() helper, and a toolbox of timing functions plus easeIn/Out/InOut transforms.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>From the orbital height</title>
      <link>https://javascriptcodex.com/webcomponents-intro</link>
      <guid isPermaLink="true">https://javascriptcodex.com/webcomponents-intro</guid>
      <description>A high-level tour of why component architecture matters and which browser standards make up web components.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Custom elements</title>
      <link>https://javascriptcodex.com/custom-elements</link>
      <guid isPermaLink="true">https://javascriptcodex.com/custom-elements</guid>
      <description>Define your own HTML tags with a JavaScript class, hook into their lifecycle callbacks, react to attribute changes, and extend built-in elements.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Shadow DOM</title>
      <link>https://javascriptcodex.com/shadow-dom</link>
      <guid isPermaLink="true">https://javascriptcodex.com/shadow-dom</guid>
      <description>Give a component its own private DOM tree with scoped styles and its own id space, isolated from the surrounding page.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Template element</title>
      <link>https://javascriptcodex.com/template-element</link>
      <guid isPermaLink="true">https://javascriptcodex.com/template-element</guid>
      <description>The &lt;template&gt; element is an inert, syntax-checked container for HTML you clone and inject later — perfect for reusable component markup.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Shadow DOM slots, composition</title>
      <link>https://javascriptcodex.com/slots-composition</link>
      <guid isPermaLink="true">https://javascriptcodex.com/slots-composition</guid>
      <description>How Shadow DOM slots pull light-DOM content into a component's shadow tree via composition, producing a virtual flattened DOM without moving any nodes.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Shadow DOM styling</title>
      <link>https://javascriptcodex.com/shadow-dom-style</link>
      <guid isPermaLink="true">https://javascriptcodex.com/shadow-dom-style</guid>
      <description>How CSS crosses (or doesn't cross) the shadow boundary — :host, ::slotted, cascading rules, and custom properties as styling hooks.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Shadow DOM and events</title>
      <link>https://javascriptcodex.com/shadow-dom-events</link>
      <guid isPermaLink="true">https://javascriptcodex.com/shadow-dom-events</guid>
      <description>How the browser retargets events at shadow DOM boundaries, how composedPath and the composed flag control what crosses those boundaries, and how to fire custom events that escape a component.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Patterns and flags</title>
      <link>https://javascriptcodex.com/regexp-introduction</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-introduction</guid>
      <description>How to build regular expressions in JavaScript with the two syntaxes, what each of the six flags does, and how str.match, str.replace, and regexp.test use them to search, replace, and test text.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Character classes</title>
      <link>https://javascriptcodex.com/regexp-character-classes</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-character-classes</guid>
      <description>How regex character classes like \d, \s, \w and their inverses match whole categories of characters, plus how the dot and the s flag behave.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Unicode: flag &quot;u&quot; and class \p{...}</title>
      <link>https://javascriptcodex.com/regexp-unicode</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-unicode</guid>
      <description>How the u flag makes regular expressions treat 4-byte characters as one and unlocks Unicode property classes like \p{L}.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Anchors: string start ^ and end $</title>
      <link>https://javascriptcodex.com/regexp-anchors</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-anchors</guid>
      <description>The ^ and $ anchors pin a pattern to the start or end of a string, and together they let you demand a full, exact match.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Multiline mode of anchors ^ $, flag &quot;m&quot;</title>
      <link>https://javascriptcodex.com/regexp-multiline-mode</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-multiline-mode</guid>
      <description>The m flag turns ^ and $ into per-line anchors, matching at every line break instead of only at the string boundaries.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Word boundary: \b</title>
      <link>https://javascriptcodex.com/regexp-boundary</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-boundary</guid>
      <description>Learn how the \b word boundary anchor matches the invisible edges between word and non-word characters, and where it falls short.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Escaping, special characters</title>
      <link>https://javascriptcodex.com/regexp-escaping</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-escaping</guid>
      <description>How to match special regexp characters literally by escaping them, why /.../ and new RegExp differ, and why string-based patterns need doubled backslashes.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Sets and ranges [...]</title>
      <link>https://javascriptcodex.com/regexp-character-sets-and-ranges</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-character-sets-and-ranges</guid>
      <description>How square brackets in a regexp let one position match any character from a set, a range, or a character class — plus exclusions, escaping rules, and the u flag for astral characters.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Quantifiers +, *, ? and {n}</title>
      <link>https://javascriptcodex.com/regexp-quantifiers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-quantifiers</guid>
      <description>Quantifiers control how many times a pattern repeats — from the exact {n} form to the everyday shorthands +, * and ?.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Greedy and lazy quantifiers</title>
      <link>https://javascriptcodex.com/regexp-greedy-and-lazy</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-greedy-and-lazy</guid>
      <description>How quantifiers backtrack in greedy mode, how the lazy mode flips that behavior, and why a fine-tuned character exclusion sometimes beats both.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Capturing groups</title>
      <link>https://javascriptcodex.com/regexp-groups</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-groups</guid>
      <description>How parentheses in a regexp group sub-patterns, capture matched text, and expose it by number or name in match, matchAll, and replace.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Backreferences in pattern: \N and \k&lt;name&gt;</title>
      <link>https://javascriptcodex.com/regexp-backreferences</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-backreferences</guid>
      <description>Reuse what a capturing group already matched — by number with \N or by name with \k&lt;name&gt; — to match balanced quotes and other repeated text.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Alternation (OR) |</title>
      <link>https://javascriptcodex.com/regexp-alternation</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-alternation</guid>
      <description>The regexp | operator lets you match any one of several full sub-patterns, and parentheses control exactly how far its reach extends.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Lookahead and lookbehind</title>
      <link>https://javascriptcodex.com/regexp-lookahead-lookbehind</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-lookahead-lookbehind</guid>
      <description>Match text based on what comes before or after it — without consuming those surrounding characters — using lookahead and lookbehind assertions.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Catastrophic backtracking</title>
      <link>https://javascriptcodex.com/regexp-catastrophic-backtracking</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-catastrophic-backtracking</guid>
      <description>Some innocent-looking regexps blow up to exponential work on certain inputs, and you fix it either by removing ambiguity or by forbidding the engine from backtracking.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Sticky flag &quot;y&quot;, searching at position</title>
      <link>https://javascriptcodex.com/regexp-sticky</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-sticky</guid>
      <description>The sticky flag y anchors a regexp to an exact position via lastIndex, so exec matches only there and never scans ahead.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Methods of RegExp and String</title>
      <link>https://javascriptcodex.com/regexp-methods</link>
      <guid isPermaLink="true">https://javascriptcodex.com/regexp-methods</guid>
      <description>A tour of every string and regexp method for searching and replacing — match, matchAll, split, search, replace, replaceAll, exec, and test — with their traps around the g flag and lastIndex.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Performance &amp; Core Web Vitals</title>
      <link>https://javascriptcodex.com/core-web-vitals</link>
      <guid isPermaLink="true">https://javascriptcodex.com/core-web-vitals</guid>
      <description>How to measure and fix the speed your real users actually feel using the three Core Web Vitals, LCP, INP, and CLS, with PerformanceObserver, the web-vitals library, and a practical audit-diagnose-fix loop.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Canvas, WebGL &amp; WebGPU</title>
      <link>https://javascriptcodex.com/canvas-webgl-webgpu</link>
      <guid isPermaLink="true">https://javascriptcodex.com/canvas-webgl-webgpu</guid>
      <description>Draw with pixels instead of elements: the Canvas 2D immediate-mode model and render loop, the GPU pipeline behind WebGL, the emerging WebGPU compute-and-render API, and moving rendering off the main thread with OffscreenCanvas.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Web Audio &amp; WebCodecs</title>
      <link>https://javascriptcodex.com/web-audio-and-codecs</link>
      <guid isPermaLink="true">https://javascriptcodex.com/web-audio-and-codecs</guid>
      <description>Synthesize and shape sound with the Web Audio node graph, then reach the browser's built-in video and audio codecs directly through WebCodecs for custom media pipelines.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>WebAssembly</title>
      <link>https://javascriptcodex.com/webassembly</link>
      <guid isPermaLink="true">https://javascriptcodex.com/webassembly</guid>
      <description>What WebAssembly is and why it exists: a compact sandboxed bytecode that runs beside JavaScript at near-native speed, its module/instance/memory model, the cost of crossing the JS boundary, how to load it with instantiateStreaming, and which toolchain compiles C, Rust, or AssemblyScript down to a .wasm.</description>
      <category>Part 3: Advanced Web Platform</category>
    </item>
    <item>
      <title>Modules, npm &amp; Semantic Versioning</title>
      <link>https://javascriptcodex.com/modules-and-packages</link>
      <guid isPermaLink="true">https://javascriptcodex.com/modules-and-packages</guid>
      <description>How real projects are wired together: ES modules at the ecosystem level, the anatomy of package.json, npm versus pnpm and what a lockfile guarantees, semantic versioning ranges, the exports field, and supply-chain hygiene.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Package Managers in Depth: npm, pnpm, Yarn &amp; Bun</title>
      <link>https://javascriptcodex.com/package-managers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/package-managers</guid>
      <description>How npm, pnpm, Yarn and Bun actually resolve and lay out dependencies on disk — flat hoisting versus a content-addressed store, the phantom-dependency trap, lockfiles and frozen installs, and how to pick one in 2026.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Publishing a Package: exports, Provenance &amp; JSR</title>
      <link>https://javascriptcodex.com/publishing</link>
      <guid isPermaLink="true">https://javascriptcodex.com/publishing</guid>
      <description>How to take code from a repo to a registry: the publisher side of package.json, the exports map, why ESM-only is winning, previewing the tarball, provenance via trusted publishing from CI, and when JSR beats npm.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Monorepos &amp; Workspaces: pnpm, Turborepo &amp; Nx</title>
      <link>https://javascriptcodex.com/monorepos</link>
      <guid isPermaLink="true">https://javascriptcodex.com/monorepos</guid>
      <description>One repo with many packages: linking local packages with workspaces, skipping unchanged work with Turborepo's content-aware cache, scaling to Nx, wiring TypeScript project references, and publishing with Changesets.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Supply-Chain Security: Trusting Your Dependencies</title>
      <link>https://javascriptcodex.com/supply-chain-security</link>
      <guid isPermaLink="true">https://javascriptcodex.com/supply-chain-security</guid>
      <description>How to stay safe in an ecosystem where malicious packages are industrialized: lockfiles, cooldowns, install-script blocking, scoped short-lived tokens, provenance, SBOMs, and a practical way to vet a new dependency.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Build Tools: Vite, esbuild &amp; Rolldown</title>
      <link>https://javascriptcodex.com/build-tools</link>
      <guid isPermaLink="true">https://javascriptcodex.com/build-tools</guid>
      <description>Why a bundler exists, how Vite serves native ES modules in development and ships optimized chunks in production, and how tree-shaking, code-splitting, minification and source maps turn a folder of modules into a few small hashed files.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Transpilers &amp; the Compile Pipeline: Babel, SWC, esbuild &amp; tsc</title>
      <link>https://javascriptcodex.com/transpilers</link>
      <guid isPermaLink="true">https://javascriptcodex.com/transpilers</guid>
      <description>How a transpiler turns source into an AST and back, why down-leveling syntax is different from polyfilling a missing API, and what Babel, SWC, esbuild and tsc each actually do in a 2026 toolchain.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>TypeScript Tooling: tsconfig, Project References &amp; TS 7</title>
      <link>https://javascriptcodex.com/typescript-tooling</link>
      <guid isPermaLink="true">https://javascriptcodex.com/typescript-tooling</guid>
      <description>How TypeScript's tooling actually works in 2026 — splitting type-checking from emit, writing a tsconfig that matches your project, cutting big type-checks with project references, running .ts files directly, and what the Go-native TypeScript 7 compiler changes.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Code Quality: ESLint, Prettier &amp; Biome</title>
      <link>https://javascriptcodex.com/code-quality</link>
      <guid isPermaLink="true">https://javascriptcodex.com/code-quality</guid>
      <description>How linting and formatting split the job of keeping a codebase clean — ESLint's flat config and typed rules for likely bugs, Prettier for opinionated style, Biome as a fast Rust all-in-one, and how to enforce them on save, on commit, and in CI.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Testing: Vitest &amp; Playwright</title>
      <link>https://javascriptcodex.com/testing</link>
      <guid isPermaLink="true">https://javascriptcodex.com/testing</guid>
      <description>A modern JavaScript testing stack — the testing pyramid, fast unit tests and mocking with Vitest, behavior-first component tests with Testing Library, real-browser end-to-end flows with Playwright, and how to keep it all deterministic and green in CI.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Git Hooks &amp; Pre-Commit Quality Gates</title>
      <link>https://javascriptcodex.com/git-hooks</link>
      <guid isPermaLink="true">https://javascriptcodex.com/git-hooks</guid>
      <description>How git hooks catch broken code and malformed commit messages before they land — pre-commit, commit-msg and pre-push stages driven by husky or lefthook, lint-staged keeping commits fast, commitlint enforcing Conventional Commits, and why CI still has to back all of it up.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>CI/CD with GitHub Actions</title>
      <link>https://javascriptcodex.com/ci-cd</link>
      <guid isPermaLink="true">https://javascriptcodex.com/ci-cd</guid>
      <description>How JavaScript projects ship automatically — GitHub Actions workflows, jobs and runners, dependency caching, matrix builds, secrets and environments, and automated releases with Changesets and semantic-release publishing over OIDC.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Node.js, Deno &amp; Bun</title>
      <link>https://javascriptcodex.com/node-and-runtimes</link>
      <guid isPermaLink="true">https://javascriptcodex.com/node-and-runtimes</guid>
      <description>How JavaScript runs on the server: the Node runtime built on V8 and libuv, its event loop and core modules, CommonJS versus ESM, native TypeScript in 2026, and how Deno and Bun compare on permissions, tooling, and speed.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Edge &amp; Serverless Runtimes: Workers, Vercel &amp; WinterTC</title>
      <link>https://javascriptcodex.com/edge-serverless-runtimes</link>
      <guid isPermaLink="true">https://javascriptcodex.com/edge-serverless-runtimes</guid>
      <description>How JavaScript runs close to your users: serverless functions versus long-running servers, V8 isolates and sub-5ms cold starts, the WinterTC web-standard API surface shared across Node, Deno, Bun and Workers, and Hono as the cross-runtime framework that ties them together.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Deploying a JavaScript App</title>
      <link>https://javascriptcodex.com/deploying-apps</link>
      <guid isPermaLink="true">https://javascriptcodex.com/deploying-apps</guid>
      <description>A practical walkthrough of shipping a JavaScript app to production: choosing between static, serverless, container, and VPS hosting; the build-to-artifact-to-CDN flow; handling env vars and secrets safely; cache-control headers; and wiring up a custom domain with TLS.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>How Frameworks Work: Reactivity, Signals &amp; the Virtual DOM</title>
      <link>https://javascriptcodex.com/how-frameworks-work</link>
      <guid isPermaLink="true">https://javascriptcodex.com/how-frameworks-work</guid>
      <description>The single problem every UI framework solves — keeping the DOM in sync with your state — and the three strategies used to do it: virtual DOM diffing, fine-grained signals, and compilers that ship surgical DOM code.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Rendering Models: CSR, SSR, SSG, ISR, Streaming &amp; Islands</title>
      <link>https://javascriptcodex.com/rendering-models</link>
      <guid isPermaLink="true">https://javascriptcodex.com/rendering-models</guid>
      <description>Where and when your HTML gets produced — at build time, per request on the server, or in the browser — and the concrete tradeoffs each choice makes for first paint, interactivity, SEO, and server cost.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
    <item>
      <title>Meta-Frameworks: Next.js, Astro, SvelteKit &amp; Remix</title>
      <link>https://javascriptcodex.com/meta-frameworks</link>
      <guid isPermaLink="true">https://javascriptcodex.com/meta-frameworks</guid>
      <description>What a meta-framework layers on top of a UI library — routing, data fetching, rendering, bundling, and deploy adapters — and a practical way to pick between Next.js, Astro, SvelteKit, and Remix for a given project.</description>
      <category>Part 4: Ecosystem &amp; Tooling</category>
    </item>
  </channel>
</rss>
