{"id":24625694,"url":"https://github.com/awpala/javascript-concepts-map","last_synced_at":"2025-08-12T17:34:58.763Z","repository":{"id":124794709,"uuid":"278241107","full_name":"awpala/javascript-concepts-map","owner":"awpala","description":"A collection of concepts related to JavaScript programming into a single \"concepts map\"","archived":false,"fork":false,"pushed_at":"2020-08-08T15:50:01.000Z","size":110,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-19T17:58:59.286Z","etag":null,"topics":["concept-map","javascript","programming","tutorial"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awpala.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-09T02:19:17.000Z","updated_at":"2023-04-11T15:30:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"bcdd295f-eaff-43b9-b94b-474afd96fb71","html_url":"https://github.com/awpala/javascript-concepts-map","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/awpala/javascript-concepts-map","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awpala%2Fjavascript-concepts-map","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awpala%2Fjavascript-concepts-map/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awpala%2Fjavascript-concepts-map/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awpala%2Fjavascript-concepts-map/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awpala","download_url":"https://codeload.github.com/awpala/javascript-concepts-map/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awpala%2Fjavascript-concepts-map/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261248392,"owners_count":23130385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concept-map","javascript","programming","tutorial"],"created_at":"2025-01-25T04:39:40.086Z","updated_at":"2025-08-12T17:34:58.752Z","avatar_url":"https://github.com/awpala.png","language":null,"readme":"# JavaScript Concepts Map\n\n## Overview\n\nTO-DO\n\n## Contents\n\n- Programming Fundamentals\n  * Fundamental Semantics\n    * Values, Literals, and Data Types\n    * Identifiers \u0026 Keywords\n    * Operators \u0026 Precedence\n    * Boolean Operators \u0026 Truthy vs. Falsy\n    * Expressions\n  * Program Organization: Statements \u0026 Control Structures\n    * Conditionals\n      * if/else\n      * switch/case\n    * Repetition\n      * for Loops\n      * while Loops\n      * break and continue\n    * Functions\n    * Exception Handling\n  * Program Organization: Objects \u0026 Object-Oriented Programming (OOP)\n    * Object \u0026 Array Literals\n    * Prototypal Inheritance\n    * Classes (ES6)\n  * ES6+ Features\n- Native \u0026 Host Objects\n  * Built-In Global Objects\n    * Fundamental\n    * Collections \u0026 Utilities\n  * Web APIs\n    * General Utilities\n    * DOM Interaction\n  * Asynchronous Programming\n    * Web APIs\n    * Built-In Global Objects\n  * Exception Handling\n- Third-Party Libraries: Full-Stack Web Applications\n  * Frontend: React\n  * Backend: Node.js \u0026 Express\n  * Utilities\n    * Axios\n    * Massive\n    * bcrypt\n\n# Programming Fundamentals\n\nTO-DO\n\n## Fundamental Semantics\n\nTO-DO\n\n### Values, Literals, and Data Types\n\nTO-DO\n\n| Primitive Data Type | Representative Literal(s) | Description |\n| :---: | :---: | :---: |\n| Number | `5`, `3.14` , `NaN` | Represents numbers and used in arithmetic operations |\n| String | `'Hello World'` | Represents text information |\n| Boolean | `true`, `false` | Represents true/false values and used in control structures (discussed later) |\n| Null | `null` | Semantically represents the *deliberate absence/omission* of a value |\n| Undefined | `undefined` | Semantically represents an *unknown/indeterminate* value |\n\n*(N.B. Symbol and BigInt are primitive data types also provided by JavaScript as of ES2020, however, these will not be considered further here. See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures) for further discussion of primitive values.)*\n\n### Identifiers \u0026 Keywords\n\nTO-DO\n\n| Category | Keywords |\n| :---: | :---: |\n| Control Structures | `break`, `case`, `continue`, `default`, `do`, `else`, `for`, `if`, `return`, `switch`, `while` |\n| Classes \u0026 Objects | `delete`, `extends`, `get`, `new`, `set`, `static`, `super`, `this` |\n| Declarations | `class`, `const`, `function`, `let`, `var` |\n| Miscellaneous Operators | `in`, `instanceof`, `of`, `typeof`, `void` |\n| Modules (ES6+) | `as`, `export`, `from`, `import` |\n| Exception Handling | `catch`, `finally`, `throw`, `try` |\n| Primitive Literals* | `false`, `null`, `true` |\n| Miscellaneous Statements | `debugger`, `with` |\n| Asynchronous Programming (ES8+) | `async`, `await` |\n| Generators (ES6+) | `yield` |\n\n\\* N.B. The literals `NaN` and `undefined` are not keywords, as they are not identifiers but rather are properties/values of the global `Object` (see [this discussion](https://stackoverflow.com/questions/7173773/why-nan-and-undefined-are-not-reserved-keywords-in-javascript) for more information).\n\n### Operators \u0026 Precedence\n\nTO-DO\n\n| Operation | L → R Associative Operators | L ← R Associative Operators | Result of Operation |\n| :---: | :---: | :---: | :---: |\n| Miscellaneous | `f(...)` (20), `,` (1) | `++` (18^), `--` (18^), `?:` (4^^^) | (Various) |\n| Object Membership | `.` (20), `[...]` (20), `in` (12) | `delete` (17^) | Member access and/or modification |\n| Boolean/Logical | `\u0026\u0026` (6), `\\|\\|` (5) | `!` (17^) | Returns a Boolean value |\n| Arithmetic | `*` (15), `/` (15), `%` (15), `+` (14), `-` (14) | `+` (17^), `-` (17^), `**` (16) | Returns a numeric value |\n| Comparison | `\u003c` (12), `\u003c=` (12), `\u003e` (12), `\u003e=` (12), `==` (11), `!=` (11), `===` (11), `!==` (11) | | Returns a Boolean value |\n| Variable Assignment | | `=` (3), `**=` (3), `*=` (3), `/=` (3), `%=` (3), `+=` (3), `-=` (3) | Assign and/or update variable's stored value |\n\nN.B. In the table above, precedence rank number is indicated in parentheses (where higher number has higher precedence), and furthermore with respect to the operands count, the annotation ^ denotes unary operators, ^^^ denotes the ternary operator, and all others denote/imply binary operators.\n\n!TO-DO: `(...)` has highest precedence and can increase the precedence of its nested value or expression accordingly\n\n### Boolean Operators \u0026 Truthy vs. Falsy\n\nTO-DO\n\n| `op1` | `op2` | `!op1` | `op1 \u0026\u0026 op2` | `op1 \\|\\| op2` |\n| :---: | :---: | :---: | :---: | :---: |\n| `true` | `true` | `false` | `true` | `true` |\n| `true` | `false` | `false` | `false` | `true` |\n| `false` | `true` | `true` | `false` | `true` |\n| `false` | `false` | `true` | `false` | `false` |\n\nN.B. In the table above, `op1` and `op2` denote arbitrary operands (which in general can be either values or expressions).\n\nFalsy values:\n\n| Primitive Data Type | Falsy Literals |\n| :---: | :---: |\n| Number | `0`, `-0`, `NaN` |\n| String | `\"\"` (empty string) |\n| Boolean | `false` |\n| Null | `null` |\n| Undefined | `undefined` |\n\n### Expressions\n\nTO-DO\n\n## Program Organization: Statements \u0026 Control Structures\n\nTO-DO\n\n| Book Analogy | Software Counterpart |\n| :---: |  :---: |\n| Book | Application Program |\n| Chapters and References | Control Structures, Modules |\n| Sentences | Statements |\n| Phrases and Clauses | Expressions |\n| Grammatical/Function Words | Operators |\n| Lexical Words | Values |\n\n### Conditionals\n\nTO-DO\n\n#### if/else\n\nTO-DO\n\n#### switch/case\n\nTO-DO\n\n### Repetition\n\nTO-DO\n\n#### for Loops\n\nTO-DO\n\n#### while Loops\n\nTO-DO\n\n#### break and continue\n\nTO-DO\n\n### Functions\n\nTO-DO\n\n### Exception Handling\n\nTO-DO\n\n## Program Organization: Objects \u0026 Object-Oriented Programmming (OOP)\n\nTO-DO\n\n| Feature | Primitives | Objects |\n| :---: | :---: | :---: |\n| State | Values | Properties |\n| Actions | Operators | Methods |\n\n### Object \u0026 Array Literals\n\nTO-DO\n\n### Prototypal Inheritance\n\nTO-DO\n\n### Classes (ES6)\n\nTO-DO\n\nGeneral syntax:\n```js\n// Class Definition\nclass ClassName {\n  constructor(val1, val2, ..., valN) {\n    // properties\n    this.prop1 = val1;\n    this.prop2 = val2;\n    ...\n    this.propN = valN;\n  }\n  \n  // methods\n  method1( ... ) { ... } // pre-ES6\n  method2 = ( ... ) =\u003e { ... } // ES6+ arrow syntax\n  ...\n  methodN = ( ... ) =\u003e { ... }\n}\n\n// Object Instantiation from Class\nconst obj = new ClassName(arg1, arg2, ..., argN); // args initialize obj's state (i.e., properties) via class constructor\n```\nN.B. In general, `arg1`/`val1`, `arg2`/`val2`, etc. can be either primitive values or references to other objects (e.g., array literals `[...]`, object literals `{...}`, bound function objects, etc.)\n\n## ES6+ Features\n\nTO-DO\n\n# Native \u0026 Host Objects\n\nTO-DO\n\n***Notation Note***: In general, an instance object will be denoted with `camelCase` (e.g., `arr.length`, `nodeList.item()`, etc.), whereas a static object will be denoted by the object's class name in `PascalCase` (e.g., `Math.PI`, `Promise.all()`, etc.). The principal exception to the latter is the `Console` API, which by convention/specification uses lowercase to refer to the static `console` object (e.g., `console.log()`).\n\n## Built-In Global Objects\n\nTO-DO\n\n### Fundamental\n\nTO-DO - `Object`, `Function`\n\n| Fundamental Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `Object` | The base object from which all object/reference types inherit (via prototypal inheritance), and provides  a key/value storage collection | `obj.constructor` | `Object.assign()`, `Object.create()`, `Object.entries()`, `Object.is()`, `Object.keys()`, `obj.toString()`, `Object.values()` | [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) |\n| `Function` | Routes inputs and outputs, and modularizes code | `fn.length`, `fn.name` | `fn.apply()`, `fn.bind()`, `fn.call()` | [Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) |\n\n### Collections \u0026 Utilities\n\nTO-DO - `Array`, `Math`, `String`, `Set`, `RegExp`\n\n| Collection/Utility Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `Array` | An indexed ordered-list collection | `arr.length` | `arr.concat()`, `arr.every()`, `arr.filter()`, `arr.find()`, `arr.findIndex()`, `arr.forEach()`, `arr.includes()`, `arr.indexOf()`, `arr.join()`, `arr.keys()`, `arr.map()`, `arr.pop()`, `arr.push()`, `arr.reduce()`, `arr.reduceRight()`, `arr.reverse()`, `arr.shift()`, `arr.slice()`, `arr.some()`, `arr.sort()`, `arr.splice()`, `arr.unshift()` | [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) |\n| `JSON` | A utility object for parsing JSON data | (*no properties*) | `JSON.parse()`, `JSON.stringify()` | [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) |\n| `Map` | Collection of key-value pairs which remembers original insertion order of the keys | `map.size` | `map.clear()`, `map.delete()`, `map.forEach()`, `map.get()`, `map.has()`, `map.keys()`, `map.set()`, `map.values()` | [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) |\n| `Math` | Mathematical constants and functions | `Math.E`, `Math.LN2`, `Math.LN10`, `Math.LOG2E`, `Math.LOG10E`, `Math.PI`, `Math.SQRT1_2`, `Math.SQRT2` | `Math.abs()`, `Math.ceil()`, `Math.cos()`, `Math.exp()`, `Math.floor()`, `Math.log()`, `Math.max()`, `Math.min()`, `Math.pow()`, `Math.random()`, `Math.round()`, `Math.sin()`, `Math.sqrt()`, `Math.tan()`, `Math.trunc()` | [Math](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) |\n| `Number` | A wrapper around the primitive number which provides additional numerical features | `Number.EPSILON`, `Number.MAX_VALUE`, `Number.MIN_VALUE`, `Number.NEGATIVE_INFINITY`, `Number.POSITIVE_INFINITY` | `Number.isNaN()`, `Number.isFinite()`, `Number.isInteger()`, `Number.isSafeInteger()`, `num.toExponential()`, `num.toFixed()`, `num.toPrecision()`, `num.toString()` | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) |\n| `Set` | Collection of unique values which are iterable by insertion order | `set.size` | `set.add()`, `set.clear()`, `set.delete()`, `set.entries()`, `set.forEach()`, `set.has()`, `set.keys()`, `set.values()` | [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) |\n| `String` | A wrapper around the primitive string which represents text information that can be modified | `str.length` | `str.charAt()`, `str.concat()`, `str.includes()`, `str.endsWith()`, `str.indexOf()`, `str.lastIndexOf()`, `str.match()`, `str.matchAll()`, `str.padEnd()`, `str.padStart()`, `str.repeat()`, `str.replace()`, `str.replaceAll()`, `str.search()`, `str.slice()`, `str.split()`, `str.startsWith()`, `str.substr()`, `str.substring()`, `str.toLowerCase()`, `str.toUpperCase()`, `str.trim()`, `str.trimStart()`, `str.trimEnd()` | [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) |\n| `RegExp` | Text processing using regular expressions | `re.flags`, `re.dotAll`, `re.global`, `re.ignoreCase`, `re.multiline`, `re.source`, `re.sticky` | `re.compile()`, `re.exec()`, `re.test()` | [RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) |\n\n## Web APIs\n\nTO-DO\n\n### General Utilities\n\nTO-DO - `Console`\n\n| Utility Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `Console` | Display information to the Web console | (*No properties*) | `console.clear()`, `console.debug()`, `console.dir()`, `console.error()`, `console.info()`, `console.log()`, `console.table()`, `console.time()`, `console.timeEnd()`, `console.trace()` | [console](https://developer.mozilla.org/en-US/docs/Web/API/console) | \n\n### DOM Interaction\n\nTO-DO - `Window`, `Document`, `Element`, `Event`, `EventTarget`, `HTMLCollection`, `HTMLElement`, `Node`, `NodeList`\n\n!TO-DO: `Window` [MDN Window](https://developer.mozilla.org/en-US/docs/Web/API/Window)\n\n| DOM Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `Document` | Represents the DOM tree of the Web page | `document.body`, `document.documentElement`, `document.head`, `document.links`, `node.childElementCount`, `node.children`, `node.firstElementChild`, `node.lastElementChild`, `document.onselectionchange`, `document.onvisibilitychange` | `document.addEventListener()`, `document.adoptNode()`, `document.createAttribute()`, `document.createElement()`, `document.createEvent()`, `document.getElementsbyClassName()`, `document.getElementsByTagName()`, `document.importNode()`, `document.getElementById()`, `document.querySelector()`, `document.querySelectorAll()` |[Document](https://developer.mozilla.org/en-US/docs/Web/API/document) |\n| `Element` | The base class for elements in the `Document` object (e.g., `HTMLElement` and `SVGElement`) | `element.attributes`, `element.classList`, `element.className`, `element.id`, `element.innerHTML`, `element.outerHTML`, `element.tagName`, `element.onfullscreenchange` | `element.addEventListener()`, `element.dispatchEvent()`, `element.getAttribute()`, `element.getAttributeName()`, `element.getElementsByClassName()`, `element.getelementsByTagName()`, `element.hasAttribute()`, `element.hasAttributes()`, `element.hasPointerCapture()`, `element.insertAdjacentElement()`, `element.insertAdjacentHTML()`, `element.matches()`, `element.querySelector()`, `element.querySelectorAll()`, `element.removeAttribute()`, `element.removeEventListener()`, `element.setAttribute()`, `element.toggleAttribute()` | [Element](https://developer.mozilla.org/en-US/docs/Web/API/Element) |\n| `Event` | An interaction (e.g., by user) with the DOM | `event.bubbles`, `event.cancelable`, `event.currentTarget`, `event.defaultPrevented`, `event.eventPhase`, `event.target`, `event.type`, `event.isTrusted` | `event.preventDefault()`, `event.stopImmediatePropagation()`, `event.stopPropagation()` | [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event) |\n| `EventTarget` | An object which can receive events and listeners (e.g., `Element`, `Document`, and `Window`)  | (*no properties*) | `target.addEventListener()`, `target.removeEventListener()`, `target.dispatchEvent()` | [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) |\n| `HTMLCollection` | An array-like collection of HTML elements in document order | `c.length` | `c.item()`, `c.namedItem()` | [HTMLCollection](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection) |\n| `HTMLElement` | An object representing any HTML element | `element.contentEditable`, `elementisContentEditable`, `element.dir`, `element.hidden`, `element.innerText`, `element.itemId`, `element.itemRef`, `element.itemValue`, `element.style`, `element.title` | `element.addEventListener()`, `element.blur()`, `element.click()`, `element.focus()` | [HTMLElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement) |\n| `Node` | A key base class for other DOM API objects representing a generic node in the DOM tree (which can be, for example, an `Element`) | `node.baseURI`, `node.childNodes`, `node.firstChild`, `node.lastChild`, `node.nextSibling`, `node.nodeName`, `node.nodeType`, `node.nodeValue`, `node.parentNode`, `node.parentElement`, `node.previousSibling`, `node.textContent` | `node.appendChild()`, `node.cloneNode()`, `node.contains()`, `node.getRootNode()`, `node.hasChildNodes()`, `node.inserBefore()`, `node.isEqualNode()`, `node.isSameNode()`, `node.removeChild()`, `node.replaceChild()` | [Node](https://developer.mozilla.org/en-US/docs/Web/API/Node) |\n| `NodeList` | A collection of nodes | `nodeList.length` | `nodeList.item()`, `nodeList.entries()`, `nodeList.forEach()`, `nodeList.keys()`, `nodeList.values()` | [NodeList](https://developer.mozilla.org/en-US/docs/Web/API/NodeList) |\n\n\n## Asynchronous Programming\n\nTO-DO\n\n### Web APIs\n\nTO-DO - `XMLHttpRequest`, `Fetch`\n\n| Async HTTP Request Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `XMLHttpRequest` | Object to interact with Web servers asynchronously, used extensively in AJAX programming  | `xhr.onreadystatechange`, `xhr.readyState`, `xhr.response`, `xhr.responseText`, `xhr.status`, `xhr.statusText`, `xhr.timeout` | `xhr.abort()`, `xhr.getAllResponseHeaders()`, `xhr.getResponseHeader()`, `xhr.open()`, `xhr.send()`, `xhr.setRequestHeader()` | [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) |\n\n!TO-DO: Fetch API - e.g., \n```js\nfetch(request)\n .then(response =\u003e { ... return ...; })\n // (optional) chained .then(...)'s\n .catch(error =\u003e { ... return ...; };\n```\n\n| Fetch API Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `Body` | Represents the body of the `Request` and `Response` object | `response.body`, `response.bodyUsed` | `response.blob()`, `response.formData()`, `response.json()`, `response.text()` | [Body](https://developer.mozilla.org/en-US/docs/Web/API/Body) |\n| `Headers` | Performs various action on HTTP request and response headers | (*no properties*) | `headers.append()`, `headers.delete()`, `headers.entries()`, `headers.forEach()`, `headers.forEach()`, `headers.get()`, `headers.has()`, `headers.keys()`, `headers.set()`, `headers.values()` | [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) |\n| `Request` | Represents an HTTP resource request | `request.body`, `request.bodyUsed`, `request.cache`, `request.destination`, `request.headers`, `request.method`, `request.mode`, `request.url` | `request.clone()`, `request.blob()`, `request.formData()`, `request.json()`, `request.text()` | [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) |\n| `Response` | Represents the response to an HTTP request | `response.body`, `response.bodyUsed`, `response.headers`, `response.ok`, `response.status`, `response.statusText`, `response.type`, `response.url` | `response.blob()`, `response.clone()`, `response.error()`, `response.formData()`, `response.json()`, `response.redirect()`, `response.text()` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) |\n\n!TO-DO: global (async) functions `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval`\n\n### Built-In Global Objects\n\nTO-DO - `Promise`, `async`/`await`\n\n| Async Promise Object | Description | Representative Properties | Representative Methods | MDN Reference |\n| :---: | :---: | :---: | :---: | :---: |\n| `Promise` | An object representing the evantual completion/failure of an asynchronous operation, and its resulting value (i.e., *pending*, *fulfilled*, or *rejected*) | (*no properties*) | `Promise.all()`, `Promise.allSettled()`, `Promise.any()`, `p.catch()`, `p.finally()`, `Promise.race()`, `Promise.reject()`, `Promise.resolve()`, `p.then()` | [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) |\n\n!TO-DO: `async`/`await` functions (ES8+)\n\n## Exception Handling\n\nTO-DO - `Error` (and related `...Error` objects)\n\n# Third-Party Libraries: Full-Stack Web Applications\n\nTO-DO\n\n## Frontend: React\n\nTO-DO\n\n## Backend: Node.js \u0026 Express\n\nTO-DO\n\n## Utilities\n\nTO-DO\n\n### Axios\n\nTO-DO\n\n### Massive\n\nTO-DO\n\n### bcrypt\n\nTO-DO\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawpala%2Fjavascript-concepts-map","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawpala%2Fjavascript-concepts-map","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawpala%2Fjavascript-concepts-map/lists"}