What are the different ways to copy an object in JavaScript?
Ava W
ava w profile pic

In JavaScript, there are multiple ways to copy an object. However, it's important to note that objects in JavaScript are assigned and copied by reference, meaning that assigning an object to a new variable or passing it to a function simply creates a reference to the original object. To create an independent copy of an object, you need to perform a deep copy, which copies both the object's properties and their values. Here are several commonly used methods for copying an object: 1. Using the spread syntax (...): The spread syntax allows you to create a shallow copy of an object by expanding its properties into a new object. However, keep in mind that nested objects and arrays are still copied by reference. Here's an example:

1
2
3

const originalObject = { name: 'John', age: 30 };
const copiedObject = { ...originalObject };

In this example, the spread syntax{ ...originalObject } creates a new objectcopiedObject with the same properties and values asoriginalObject. 2. UsingObject.assign(): TheObject.assign() method allows you to copy the enumerable properties from one or more source objects into a target object. It creates a shallow copy of the object. Here's an example:

1
2
3

const originalObject = { name: 'John', age: 30 };
const copiedObject = Object.assign({}, originalObject);

In this example,Object.assign({}, originalObject) creates a new objectcopiedObject by assigning the properties oforiginalObject to it. 3. UsingJSON.parse() andJSON.stringify(): You can also perform a deep copy of an object by converting it to JSON format usingJSON.stringify(), and then parsing the JSON string back into a new object usingJSON.parse(). This method ensures that all properties and values are deeply copied. However, be aware that it has limitations with certain data types like functions or undefined properties. Here's an example:

1
2
3

const originalObject = { name: 'John', age: 30 };
const copiedObject = JSON.parse(JSON.stringify(originalObject));

In this example,JSON.stringify(originalObject) convertsoriginalObject to a JSON string, andJSON.parse() converts the JSON string back to a new objectcopiedObject. 4. Using libraries or utility functions: There are several third-party libraries, such as Lodash or Ramda, that provide utility functions for deep copying objects. These libraries often offer additional features and customization options for copying objects. Here's an example of using Lodash'scloneDeep() method:

1
2
3
4

const _ = require('lodash');
const originalObject = { name: 'John', age: 30 };
const copiedObject = _.cloneDeep(originalObject);

In this example,_.cloneDeep(originalObject) from Lodash performs a deep copy oforiginalObject and assigns the result tocopiedObject. It's important to note that deep copying an object can have performance implications, especially for large or complex objects. Consider the specific requirements and complexity of your objects before deciding on the appropriate method for copying. Choose the method that best fits your needs, considering factors such as whether you need a shallow or deep copy, dependencies on external libraries, and performance considerations.