Skip to content

Objects in JavaScript ​

Object Initializers ​

Here is how to create an object in the most common and simplest way:

javascript
const movie = {
  imdbID: 'tt0082340',
  title: 'Escape from New York',
  frenchTitle: 'New-York 1997',
}

This is an object initializer: it is a collection of key-value pairs:

  • this collection is enclosed by curly brackets
  • the key is separated from the value by a colon :
  • each key-value pair is separated by a comma ,

By convention, each key-value pair is often placed on its own line, with no space before the colon and a space after it.

A key (the name of a property) can have any name. If a key has a name that is not a valid identifier*, it must be enclosed in quotes.

* to be brief, for an identifier to be valid, it must not contain spaces, punctuation marks, or special characters except $ and _ (it is actually a bit more complicated)

Syntaxes for Accessing an Object's Property ​

There are two different syntaxes for accessing an object's property.

Dot Syntax ​

javascript
const title = movie.title // dot syntax

Bracket Syntax ​

javascript
const imdbID = movie.imdbID // bracket syntax

In JavaScript, everything is a value, and any value can be stored in a variable.

javascript
'imdbID' // a value
const propName = 'imdbID' // The variable `propName` contains the value 'imdbID'

The bracket syntax allows retrieving the value of the property whose name is in a variable:

javascript
const prop = 'imdbID'
const imdbID = movie[prop]

Modifying an Object's Property ​

javascript
movie.title = 'Escape From New York'

Or (strongly discouraged if the property name is known):

javascript
movie.title = 'Escape From New York' // less readable, no completion in editors
// prone to (silent) errors, and less performant

Adding a Property to an Object ​

javascript
movie.brazilianTitle = 'Fuga de Nova York'

Or (discouraged, ditto):

javascript
movie.brazilianTitle = 'Fuga de Nova York'

Deleting a Property from an Object ​

Assigning the value undefined to a property is not the same as deleting a property: in the first case, the property will still exist on the object.

To delete the property, there is the delete operator which is used as follows:

javascript
delete movie.title

The bracket syntax is also valid here:

javascript
delete movie.title

Creating an Object with Dynamic Property Names ​

Since ES6, you can write this:

javascript
const propName = 'foo'
// ...later
const obj = {
  [propName]: 'bar'
}
obj // { foo: 'bar' }

An Object is Only Equal to Itself ​

If two objects are created, and they contain the same properties with the same values, they are and remain two distinct values. Even if they are empty objects.

javascript
const one = {}
const two = {}

one === two // false

const sameOne = one // new name for the same value

sameOne === one // true
sameOne === two // false

const arr1 = []
const arr2 = []

arr1 === arr2 // false

const sameArr1 = arr1
sameArr1 === arr1 // true
sameArr1 === arr2 // false