JavaScript Type System
JavaScript has two main categories of values:
- Primitive values
- Objects
Understanding the difference between primitive values and objects is essential for understanding JavaScript.
Primitive Types
JavaScript has seven primitive types.
| Type | Example | typeof Result |
|---|---|---|
| string | "Hello" |
"string" |
| number | 123 |
"number" |
| boolean | true |
"boolean" |
| bigint | 123n |
"bigint" |
| symbol | Symbol() |
"symbol" |
| undefined | undefined |
"undefined" |
| null | null |
"object" |
The result of typeof null is "object".
This is a historical JavaScript behavior.
Primitive values are immutable.
Primitive values are not objects.
Objects
All non-primitive values are objects.
Objects store collections of properties.
Example
const person = {
firstName: "John",
lastName: "Doe"
};
Arrays, dates, maps, sets, promises, and regular expressions are all objects.
| Object Type | Example |
|---|---|
| Object | {} |
| Array | [] |
| Function | function() {} |
| Date | new Date() |
| RegExp | /abc/ |
| Error | new Error() |
| Promise | new Promise() |
| Map | new Map() |
| Set | new Set() |
| WeakMap | new WeakMap() |
| WeakSet | new WeakSet() |
Primitive Values vs Objects
JavaScript provides object wrappers for some primitive types.
| Primitive Type | Wrapper Object |
|---|---|
| string | String |
| number | Number |
| boolean | Boolean |
Primitive values are normally used instead of wrapper objects.
Example
let a = "Hello";
let b = new String("Hello");
(typeof a) // string
(typeof b) // object
Built-in Constructors
JavaScript provides built-in constructors for creating objects and values.
| Constructor | Creates |
|---|---|
Object() |
Objects |
Function() |
Function objects |
Array() |
Array objects |
Date() |
Date objects |
RegExp() |
Regular expression objects |
Error() |
Error objects |
Promise() |
Promise objects |
Map() |
Map objects |
Set() |
Set objects |
WeakMap() |
WeakMap objects |
WeakSet() |
WeakSet objects |
Some built-in functions return primitive values.
| Function | Returns |
|---|---|
String(value) |
A primitive string |
Number(value) |
A primitive number |
Boolean(value) |
A primitive boolean |
BigInt(value) |
A primitive bigint |
Symbol(description) |
A primitive symbol |
Object Hierarchy
Most built-in JavaScript objects inherit from Object.
Object
├─ Function
├─ Array
├─ Date
├─ RegExp
├─ Error
├─ Promise
├─ Map
├─ Set
├─ WeakMap
└─ WeakSet
See the JavaScript Object Hierarchy reference for more information.