DEV Community

Cover image for Mastering object manipulation in JavaScript
SavanaPoint
SavanaPoint

Posted on

Mastering object manipulation in JavaScript

Exploring Object Manipulation in JavaScript

JavaScript is a versatile programming language known for its object-oriented nature. Objects play a central role in JavaScript, and there are several techniques and methods available for manipulating objects. In this article, we'll delve into some of these techniques, including object destructuring, prototyping, and other common methods for working with objects.

Object Destructuring

Object destructuring is a convenient way to extract properties from objects and assign them to variables. It simplifies the process of working with object properties.

Example:

const user = {
    firstName: "Francisco",
    lastName: "Inoque",
    email: "jaime@savanapoint.com"
};

const { firstName, lastName, email } = user;

console.log(firstName); // Output: "Francisco"
console.log(lastName);  // Output: "Inoque"
console.log(email);     // Output: "jaime@savanapoint.com"
Enter fullscreen mode Exit fullscreen mode

In this example, we're extracting firstName, lastName, and email from the user object, making the code cleaner and more readable.

Prototyping

Prototyping is a fundamental concept in JavaScript that allows you to create objects based on prototypes, enabling code reusability and inheritance.

Example:

// Defining a prototype object
const personPrototype = {
    greet() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

// Creating an object based on the prototype
const person = Object.create(personPrototype);
person.name = "Francisco";
person.greet(); // Output: "Hello, my name is Francisco"
Enter fullscreen mode Exit fullscreen mode

In this example, we create a personPrototype object with a greet() method. We then create a person object based on the prototype, inheriting the greet() method.

Other Object Manipulation Methods

JavaScript provides various methods to manipulate objects. Here are a few commonly used ones:

Object.keys()

Object.keys() returns an array of an object's keys (property names).

Example:

const user = {
    firstName: "Francisco",
    lastName: "Inoque"
};

const keys = Object.keys(user);
console.log(keys); // Output: ["firstName", "lastName"]
Enter fullscreen mode Exit fullscreen mode

In this example, Object.keys() gives us an array containing the keys of the user object.

Object.values()

Object.values() returns an array of an object's property values.

Example:

const user = {
    firstName: "Francisco",
    lastName: "Inoque"
};

const values = Object.values(user);
console.log(values); // Output: ["Francisco", "Inoque"]
Enter fullscreen mode Exit fullscreen mode

Here, Object.values() provides an array of the property values from the user object.

Object.assign()

Object.assign() is used to copy the values of all enumerable properties from one or more source objects to a target object.

Example:

const target = { a: 1, b: 2 };
const source = { b: 3, c: 4 };

const result = Object.assign(target, source);
console.log(result); // Output: { a: 1, b: 3, c: 4 }
Enter fullscreen mode Exit fullscreen mode

Object.assign() combines properties from source into target, returning the modified target object.

Object.defineProperty()

Object.defineProperty() allows you to define or modify properties on an object with fine-grained control, including options like property value and writability.

Example:

const person = {};

Object.defineProperty(person, "name", {
    value: "Francisco",
    writable: false
});

console.log(person.name); // Output: "Francisco"
person.name = "Another Name"; // No error, but the assignment has no effect
console.log(person.name); // Still "Francisco"
Enter fullscreen mode Exit fullscreen mode

Merging Objects

Merging objects is a common operation in JavaScript, especially when dealing with configuration objects or combining data from different sources. JavaScript provides several ways to merge objects. Here are a couple of methods:

Object Spread Operator (ES6)

The object spread operator allows you to create a new object by spreading the properties of one or more source objects into a new target object.

Example:

const user = {
    firstName: "Francisco",
};

const contactInfo = {
    email: "jaime@savanapoint.com",
};

const mergedUser = { ...user, ...contactInfo };

console.log(mergedUser);
// Output: { firstName: "Francisco", email: "jaime@savanapoint.com" }
Enter fullscreen mode Exit fullscreen mode

In this example, we use the spread operator { ...user, ...contactInfo } to merge the user and contactInfo objects into a new object called mergedUser.

Object.assign()

We've already discussed Object.assign() for copying properties, but it's also commonly used for merging objects.

Example:

const user = {
    firstName: "Francisco",
};

const contactInfo = {
    email: "jaime@savanapoint.com",
};

const mergedUser = Object.assign({}, user, contactInfo);

console.log(mergedUser);
// Output: { firstName: "Francisco", email: "jaime@savanapoint.com" }
Enter fullscreen mode Exit fullscreen mode

Here, we create an empty target object {} and use Object.assign() to merge the user and contactInfo objects into it.

Here, we use Object.defineProperty() to define the name property as non-writable after its initial definition.

These techniques and methods for object manipulation are essential tools in a JavaScript developer's toolkit. They make it easier to work with complex data structures and build maintainable and efficient code.

Top comments (0)