JavaScript Objects
This YouTube video was created by Steve Griffith.
Objects are perhaps the most important component inside JavaScript. Remember that any value that is not a primitive data type is an object. Furthermore is JavaScript allows us to create custom objects known as object literals
.
Creating Object Literals
Object literals
give us the ability to group things more descriptively, by creating key/value pairs, known as properties.
They are created by using a set of curly braces ({}
). Inside the curly braces is a comma-separated list of properties. Each property is made up of a key and a value separated by a colon (:
).
// An object with no properties
const empty = {}
// An object with properties
const car = {
year: 2019,
make: 'Toyota',
model: 'Prius'
}
Retrieving Object Properties
Every property in an object acts as a variable or container, with the key serving as an identifier. So, it is possible to retrieve a property's value through the use of the property's key.
There are two methods for retrieving a property's value, dot notation
and bracket notation
.
const car = {
year: 2019,
make: 'Toyota',
model: 'Prius'
}
// dot notation
console.log(car.make) // 'Toyota'
// bracket notation
console.log(car['model']) // 'Prius'
NOTE
When using bracket notation
the key name must be in quotes, while when using dot notation
the key name should not.
Like arrays, objects can also include arrays and other objects. Such objects are often referred to as multidimensional objects. When this occurs an extra set of notation is required to retrieve these nested values.
NOTE
Just like stand-alone arrays, when working with arrays inside objects, you can only use bracket notation
on the array. However is possible to mix the notations in the statement.
const car = {
year: 2019,
make: 'Toyota',
model: 'Prius',
features: [
'Hybrid',
'Remote Keyless Entry',
'Anti-Lock Brakes',
'Stability Control',
'GPS Navigation'
]
}
// dot notation
console.log(car.features[1]) // 'Remote Keyless Entry'
// bracket notation
console.log(car['features'][2]) // 'Anti-lock Brakes'
Updating Object Properties
Just like with variables, it is also possible to updates the values of an object's property using the equal sign (=
). Both dot notation
and bracket notation
can be used when updating property values.
const car = {
year: 2019,
make: 'Toyota',
model: 'Prius',
features: [
'Hybrid',
'Remote Keyless Entry',
'Anti-Lock Brakes',
'Stability Control',
'GPS Navigation'
]
}
// dot notation
car.make = 'Tesla'
// bracket notation
car['model'] = 'Model 3'
// nested property
car.features[0] = 'Electric'
Adding Object Properties
Adding new properties to an object is remarkably similar to updating properties. The same syntax is used, except that instead of using an existing property key a new property key is used.
const car = {
year: 2019,
make: 'Tesla',
model: 'Model 3',
features: [
'Electric',
'Remote Keyless Entry',
'Anti-Lock Brakes',
'Stability Control',
'GPS Navigation'
]
}
// dot notation
car.color = 'Red'
// bracket notation
car['range'] = 500
Removing Object Properties
To remove a property from an object, use the delete
operator followed by the desired property to remove.
const car = {
year: 2019,
make: 'Tesla',
model: 'Model 3',
features: [
'Electric',
'Remote Keyless Entry',
'Anti-Lock Brakes',
'Stability Control',
'GPS Navigation'
],
color: 'Red',
range: 500
}
// dot notation
delete car.range
// bracket notation
delete car['features']
Defining Object Methods
In addition to storing data, objects can also contain entire methods. These methods are commonly used to process data stored in the object's properties.
const object = {
value: 42,
greet: function() {
console.log('Hello!')
},
displayValue: function() {
console.log(this.value)
}
}
object.greet()
object.displayValue()
Note that in order to access the property value
, a special keyword this
must be used to dictate that we expect to find the variable as a property of the "owner" of the method.