If you understand objects, you understand JavaScript.
In JavaScript, objects are a fundamental data type used to store and organize data. They are key-value pairs, where the keys are strings (or symbols) that uniquely identify the values. Objects can hold any type of value, including primitive data types (such as numbers and strings) and other objects.
Objects in JavaScript are dynamic, meaning that their properties can be added, modified, or deleted at runtime.
In JavaScript, almost "everything" is an object.
For Example
const employee = {
id: 7,
name: 'John',
dept: 'HR'
}
Here is an employee
object with three properties: id, name, and dept as keys and 7, 'John', and 'HR' as values.
Creating a JavaScript Object
Using an Object Literal
This is the easiest way to create a JavaScript Object.
const person = {
name: 'John',
age: 30,
city: 'New York'
};
In this approach, an object is defined using curly braces {}
and the properties and their values are specified within the braces using key-value pairs.
Object Constructor
const person = new Object();
person.name = 'John';
person.age = 30;
person.city = 'New York';
In this approach, an object is created using the Object
constructor, and properties are added using dot notation or bracket notation.
Factory Function
A factory function is a function that returns an object. It allows you to create multiple objects with the same structure and behavior.
function createPerson(name, age, city) {
return {
name: name,
age: age,
city: city,
sayHello: function() {
console.log('Hello, my name is ' + this.name);
}
};
}
const person = createPerson('John', 30, 'New York');
Object.create()
The Object.create()
method creates a new object and sets the prototype of that object to the specified object.
const person = Object.create({
name: 'John',
age: 30,
city: 'New York'
});
ES6 Classes
ES6 introduced the class
syntax, which provides a more concise and structured way to define objects and their behavior.
class Person {
constructor(name, age, city) {
this.name = name;
this.age = age;
this.city = city;
}
sayHello() {
console.log('Hello, my name is ' + this.name);
}
}
const person = new Person('John', 30, 'New York');
JavaScript Objects are Mutable
Objects are mutable. They are addressed by reference, not by value.If person is an object, the following statement will not create a copy of person.The object x is not a copy of person. It is person. Both x and person are the same object. Any changes to x will also change person, because x and person are the same object.
const person = {
firstName:"John",
lastName:"Doe",
age:50, eyeColor:"blue"
}
const x = person;
x.age = 10;
console.log(person); // { firstName: 'John', lastName: 'Doe', age: 10, eyeColor: 'blue' }
Accessing JavaScript Properties
The syntax for accessing the property of an object is:
objectName.property // person.age
or
objectName["property"] // person["age"]
or
objectName[expression] // x = "age"; person[x]
Adding New Properties
person.nationality = "English";
Deleting Properties
The delete
keyword deletes a property from an object:
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
delete person.age;
or
delete person["age"];
console.log(person); // { firstName: 'John', lastName: 'Doe', eyeColor: 'blue' }
Nested Objects
myObj = {
name:"John",
age:30,
cars: {
car1:"Ford",
car2:"BMW",
car3:"Fiat"
}
}
console.log(myObj.cars.car2); // BMW
console.log(myObj.cars["car2"]); // BMW
console.log(myObj["cars"]["car2"]); // BMW
Object Methods
A JavaScript method is a property containing a function definition.
const person = {
firstName: "John",
lastName: "Doe",
id: 5566,
fullName: function() {
return this.firstName + " " + this.lastName;
}
};
Accessing Object Methods
name = person.fullName();
console.log(name); // John Doe
Adding a Method to an Object
person.name = function () {
return this.firstName + " " + this.lastName;
};
How to Display JavaScript Objects?
const person = {
name: "John",
age: 30,
city: "New York"
};
document.getElementById("demo").innerHTML = person;
Displaying a JavaScript object will output [object Object] in the browser
Some common ways to display JavaScript objects are
Displaying the Object Properties by name
const person = {
name: "John",
age: 30,
city: "New York"
};
document.getElementById("demo").innerHTML =
person.name + "," + person.age + "," + person.city;
// John,30,New York
Displaying the Object in a Loop
const person = {
name: "John",
age: 30,
city: "New York"
};
let txt = "";
for (let x in person) {
txt += person[x] + " ";
};
document.getElementById("demo").innerHTML = txt; // John 30 New York
for(let x in person){
console.log(person[x]);
}
output
//John
//30
//New York
Using Object.values()
Any JavaScript object can be converted to an array using Object.values()
:
const person = {
name: "John",
age: 30,
city: "New York"
};
const myArray = Object.values(person);
console.log(myArray );
// [ 'John', 30, 'New York' ]
document.getElementById("demo").innerHTML=myArray;
// John,30,New York
Using JSON.stringify()
The JSON.stringify()
method converts a JavaScript object into a JSON string representation.
JSON.stringify
will not stringify functions:
const person = {
name: "John",
age: 30,
city: "New York"
};
let myString = JSON.stringify(person);
console.log(myString); // {"name":"John","age":30,"city":"New York"}
document.getElementById("demo").innerHTML = myString;
// {"name":"John","age":30,"city":"New York"}
#