Standard Built-in Objects
Standard Built-in Objects
Section titled “Standard Built-in Objects”JavaScript provides a rich set of built-in objects that form the foundation of the language. This section covers all standard built-in objects, their methods, and properties.
Value Properties
Section titled “Value Properties”Global Properties
Section titled “Global Properties”- globalThis - Universal global object reference
- Infinity - Numeric value representing infinity
- NaN - “Not-a-Number” value
- undefined - Primitive value undefined
Fundamental Objects
Section titled “Fundamental Objects”Object
Section titled “Object”The Object constructor creates object wrappers for the given value.
// Object creationconst obj = new Object();const literal = { key: 'value' };
// Static methodsObject.keys(obj); // Get object keysObject.values(obj); // Get object valuesObject.entries(obj); // Get key-value pairsObject.assign(target, source); // Copy propertiesObject.freeze(obj); // Make object immutableObject.seal(obj); // Prevent property addition/deletion
Key Methods:
- Object.assign() - Copy properties between objects
- Object.create() - Create object with specified prototype
- Object.defineProperty() - Define object property
- Object.entries() - Get key-value pairs
- Object.freeze() - Make object immutable
- Object.keys() - Get object property names
- Object.values() - Get object property values
Function
Section titled “Function”Functions are first-class objects in JavaScript.
// Function declarationfunction greet(name) { return `Hello, ${name}!`;}
// Function expressionconst add = function(a, b) { return a + b;};
// Arrow functionconst multiply = (a, b) => a * b;
// Function methodsgreet.call(thisArg, 'World');greet.apply(thisArg, ['World']);const boundGreet = greet.bind(thisArg);
Boolean
Section titled “Boolean”Boolean object represents a logical entity and can have two values: true and false.
// Boolean valuesconst isTrue = true;const isFalse = false;
// Boolean constructor (avoid)const boolObj = new Boolean(false); // Object, not primitive
// Conversion to booleanBoolean(1); // trueBoolean(0); // falseBoolean('hello'); // trueBoolean(''); // false!!value; // Convert to boolean (preferred)
Symbol
Section titled “Symbol”Symbols are unique identifiers, useful for object property keys.
// Create symbolsconst sym1 = Symbol();const sym2 = Symbol('description');const sym3 = Symbol.for('global'); // Global symbol registry
// Use as object keysconst obj = { [sym1]: 'value1', [sym2]: 'value2'};
// Well-known symbolsSymbol.iterator; // Define iteration behaviorSymbol.toStringTag; // Customize Object.prototype.toStringSymbol.hasInstance; // Customize instanceof behavior
Numbers and Dates
Section titled “Numbers and Dates”Number
Section titled “Number”The Number object is a wrapper for primitive numeric values.
// Number literalsconst integer = 42;const float = 3.14159;const scientific = 1.23e10;const binary = 0b1010; // 10 in decimalconst octal = 0o755; // 493 in decimalconst hex = 0xFF; // 255 in decimal
// Number propertiesNumber.MAX_VALUE; // Largest representable numberNumber.MIN_VALUE; // Smallest positive numberNumber.MAX_SAFE_INTEGER; // Largest safe integerNumber.POSITIVE_INFINITY; // Positive infinityNumber.NaN; // Not-a-Number
// Number methodsNumber.isNaN(value); // Check if value is NaNNumber.isFinite(value); // Check if value is finiteNumber.parseInt(string); // Parse integerNumber.parseFloat(string); // Parse floating point
BigInt
Section titled “BigInt”BigInt provides a way to represent integers larger than Number.MAX_SAFE_INTEGER.
// Create BigIntconst big1 = 123n;const big2 = BigInt(123);const big3 = BigInt('123456789012345678901234567890');
// Operationsconst sum = big1 + big2;const product = big1 * big2;
// Cannot mix BigInt with regular numbers// const mixed = big1 + 123; // TypeErrorconst mixed = big1 + BigInt(123); // OK
Math is a built-in object providing mathematical constants and functions.
// ConstantsMath.PI; // π (pi)Math.E; // Euler's numberMath.LN2; // Natural logarithm of 2
// Basic operationsMath.abs(-5); // 5Math.round(4.7); // 5Math.ceil(4.1); // 5Math.floor(4.9); // 4Math.max(1, 2, 3); // 3Math.min(1, 2, 3); // 1
// Advanced functionsMath.pow(2, 3); // 8 (2^3)Math.sqrt(16); // 4Math.random(); // Random number 0-1Math.sin(Math.PI / 2); // 1
Date objects represent a single moment in time.
// Create datesconst now = new Date();const specific = new Date('2024-01-01');const fromValues = new Date(2024, 0, 1); // Year, month (0-based), day
// Get date componentsnow.getFullYear(); // Year (4 digits)now.getMonth(); // Month (0-11)now.getDate(); // Day of month (1-31)now.getDay(); // Day of week (0-6)now.getHours(); // Hours (0-23)now.getMinutes(); // Minutes (0-59)
// Format datesnow.toISOString(); // ISO stringnow.toLocaleDateString(); // Locale datenow.toLocaleTimeString(); // Locale time
Text Processing
Section titled “Text Processing”String
Section titled “String”Strings are sequences of characters used to represent text.
// String creationconst str1 = 'Hello';const str2 = "World";const template = `Hello, ${name}!`;
// String methodsstr.length; // String lengthstr.charAt(0); // Character at indexstr.indexOf('llo'); // First occurrence indexstr.lastIndexOf('l'); // Last occurrence indexstr.slice(1, 4); // Extract substringstr.substring(1, 4); // Extract substring (legacy)str.substr(1, 3); // Extract substring (deprecated)
// String transformationstr.toLowerCase(); // Convert to lowercasestr.toUpperCase(); // Convert to uppercasestr.trim(); // Remove whitespacestr.trimStart(); // Remove leading whitespacestr.trimEnd(); // Remove trailing whitespacestr.replace('old', 'new'); // Replace first occurrencestr.replaceAll('old', 'new'); // Replace all occurrences
// String testingstr.startsWith('He'); // Check if starts withstr.endsWith('lo'); // Check if ends withstr.includes('ell'); // Check if containsstr.match(/pattern/); // Match regular expression
RegExp
Section titled “RegExp”Regular expressions are patterns used to match character combinations in strings.
// Create RegExpconst regex1 = /pattern/flags;const regex2 = new RegExp('pattern', 'flags');
// Common flagsconst caseInsensitive = /hello/i; // Case insensitiveconst global = /hello/g; // Global (find all)const multiline = /^hello/m; // Multilineconst unicode = /\u{1F600}/u; // Unicode
// Methodsregex.test(string); // Test if pattern matchesregex.exec(string); // Execute and return match infostring.match(regex); // Find matches in stringstring.replace(regex, replacement); // Replace matchesstring.split(regex); // Split string by pattern
Indexed Collections
Section titled “Indexed Collections”Arrays are list-like objects for storing multiple values.
// Array creationconst arr = [1, 2, 3];const arr2 = new Array(5); // Array with 5 empty slotsconst arr3 = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']const arr4 = Array.of(1, 2, 3); // [1, 2, 3]
// Array methods - Mutatingarr.push(4); // Add to endarr.pop(); // Remove from endarr.unshift(0); // Add to beginningarr.shift(); // Remove from beginningarr.splice(1, 2, 'a'); // Remove/insert elementsarr.reverse(); // Reverse in placearr.sort(); // Sort in place
// Array methods - Non-mutatingarr.concat([4, 5]); // Combine arraysarr.join(', '); // Join to stringarr.slice(1, 3); // Extract portionarr.indexOf(2); // Find indexarr.includes(2); // Check if contains
// Array iterationarr.forEach(item => console.log(item));arr.map(item => item * 2);arr.filter(item => item > 1);arr.reduce((sum, item) => sum + item, 0);arr.find(item => item > 1);arr.findIndex(item => item > 1);
TypedArray
Section titled “TypedArray”TypedArrays provide a mechanism for accessing raw binary data.
// Different typed array typesconst int8 = new Int8Array(8); // 8-bit signedconst uint8 = new Uint8Array(8); // 8-bit unsignedconst int16 = new Int16Array(8); // 16-bit signedconst uint16 = new Uint16Array(8); // 16-bit unsignedconst int32 = new Int32Array(8); // 32-bit signedconst uint32 = new Uint32Array(8); // 32-bit unsignedconst float32 = new Float32Array(8); // 32-bit floatconst float64 = new Float64Array(8); // 64-bit float
// From existing dataconst buffer = new ArrayBuffer(16);const view = new Int32Array(buffer);
Keyed Collections
Section titled “Keyed Collections”Map objects hold key-value pairs and remember the original insertion order.
// Create Mapconst map = new Map();const map2 = new Map([ ['key1', 'value1'], ['key2', 'value2']]);
// Map methodsmap.set('key', 'value'); // Set key-value pairmap.get('key'); // Get value by keymap.has('key'); // Check if key existsmap.delete('key'); // Delete key-value pairmap.clear(); // Remove all entriesmap.size; // Number of entries
// Map iterationfor (const [key, value] of map) { console.log(key, value);}map.forEach((value, key) => console.log(key, value));Array.from(map.keys()); // Get all keysArray.from(map.values()); // Get all valuesArray.from(map.entries()); // Get all entries
Set objects store unique values of any type.
// Create Setconst set = new Set();const set2 = new Set([1, 2, 3, 3]); // [1, 2, 3]
// Set methodsset.add(1); // Add valueset.add(2).add(3); // Chainableset.has(1); // Check if value existsset.delete(1); // Delete valueset.clear(); // Remove all valuesset.size; // Number of values
// Set iterationfor (const value of set) { console.log(value);}set.forEach(value => console.log(value));Array.from(set); // Convert to array
WeakMap
Section titled “WeakMap”WeakMap objects are collections of key-value pairs where keys are objects and values can be arbitrary values.
const wm = new WeakMap();const obj = {};
// Only object keys allowedwm.set(obj, 'value');wm.get(obj); // 'value'wm.has(obj); // truewm.delete(obj); // true
// Keys are weakly referenced (garbage collected when no other references)
WeakSet
Section titled “WeakSet”WeakSet objects store unique object references.
const ws = new WeakSet();const obj = {};
// Only objects can be storedws.add(obj);ws.has(obj); // truews.delete(obj); // true
// Objects are weakly referenced
Structured Data
Section titled “Structured Data”ArrayBuffer
Section titled “ArrayBuffer”ArrayBuffer represents a generic, fixed-length raw binary data buffer.
// Create bufferconst buffer = new ArrayBuffer(16); // 16 bytes
// Cannot directly manipulate ArrayBuffer// Must use DataView or TypedArrayconst view = new DataView(buffer);const int32View = new Int32Array(buffer);
// DataView methodsview.setInt8(0, 42); // Set 8-bit integer at offset 0view.getInt8(0); // Get 8-bit integer at offset 0view.setInt32(4, 0x12345678, true); // Little endian
JSON provides methods for parsing and stringifying JSON data.
// Stringifyconst obj = { name: 'John', age: 30 };const json = JSON.stringify(obj);const prettyJson = JSON.stringify(obj, null, 2); // Formatted
// Parseconst parsed = JSON.parse(json);
// With replacer/reviverconst customJson = JSON.stringify(obj, (key, value) => { return typeof value === 'string' ? value.toUpperCase() : value;});
const customParsed = JSON.parse(json, (key, value) => { return typeof value === 'string' ? value.toLowerCase() : value;});
Control Abstraction Objects
Section titled “Control Abstraction Objects”Promise
Section titled “Promise”Promises represent the eventual completion or failure of an asynchronous operation.
// Create Promiseconst promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('Success!'); // reject(new Error('Failed!')); }, 1000);});
// Promise methodspromise.then(result => console.log(result));promise.catch(error => console.error(error));promise.finally(() => console.log('Done'));
// Static methodsPromise.resolve(value); // Create resolved promisePromise.reject(error); // Create rejected promisePromise.all([p1, p2, p3]); // Wait for allPromise.allSettled([p1, p2]); // Wait for all to settlePromise.race([p1, p2]); // First to completePromise.any([p1, p2]); // First to resolve
GeneratorFunction
Section titled “GeneratorFunction”Generator functions can be exited and later re-entered.
// Generator functionfunction* numberGenerator() { yield 1; yield 2; yield 3; return 'done';}
// Use generatorconst gen = numberGenerator();console.log(gen.next()); // { value: 1, done: false }console.log(gen.next()); // { value: 2, done: false }console.log(gen.next()); // { value: 3, done: false }console.log(gen.next()); // { value: 'done', done: true }
// Iterate generatorfor (const value of numberGenerator()) { console.log(value); // 1, 2, 3}
AsyncFunction
Section titled “AsyncFunction”Async functions return promises and can use await.
// Async functionasync function fetchData() { try { const response = await fetch('/api/data'); const data = await response.json(); return data; } catch (error) { console.error('Error:', error); throw error; }}
// Use async functionfetchData() .then(data => console.log(data)) .catch(error => console.error(error));
Reflection
Section titled “Reflection”Reflect
Section titled “Reflect”Reflect provides methods for interceptable JavaScript operations.
const obj = { x: 1, y: 2 };
// Reflect methods mirror Proxy handler methodsReflect.get(obj, 'x'); // 1Reflect.set(obj, 'z', 3); // trueReflect.has(obj, 'x'); // trueReflect.deleteProperty(obj, 'x'); // trueReflect.ownKeys(obj); // ['y', 'z']Reflect.defineProperty(obj, 'a', { value: 42, writable: true});
Proxy enables creating a proxy for another object to intercept operations.
const target = { x: 1, y: 2 };
const proxy = new Proxy(target, { get(obj, prop) { console.log(`Getting ${prop}`); return obj[prop]; }, set(obj, prop, value) { console.log(`Setting ${prop} to ${value}`); obj[prop] = value; return true; }, has(obj, prop) { console.log(`Checking if ${prop} exists`); return prop in obj; }});
proxy.x; // Logs: "Getting x", returns 1proxy.z = 3; // Logs: "Setting z to 3"'y' in proxy; // Logs: "Checking if y exists", returns true
This reference covers all major built-in objects in JavaScript. Each object has its own dedicated page with detailed examples, browser compatibility, and best practices.