JavaScript Object References and Copying for Beginners

javascript object references and copying

Object References in JavaScript mean that variables do not store full objects but only their references in memory.

What is an Object Reference in JavaScript

An object reference points to the place in memory where the object lives. A variable does not hold the real object but only its reference.

Here is an example:

let obj = { name: "Ali" };
let copy = obj;

Here, the variable copy does not store a new object. It points to the same object as obj.

A copy does not always mean a new object in memory. Sometimes both variables point to one object and changes affect both.

Difference Between Shallow Copy and Deep Copy

A shallow copy makes a new object but still points to nested objects. A deep copy makes a full new object with no shared parts.

AspectShallow CopyDeep Copy
Nested ObjectsSame referenceNew reference
Memory UseLessMore
Change EffectReflects in bothStays separate

A shallow copy works well for small objects. A deep copy works well for complex data with many nested values.

Use Object.assign() for copying

You can make a shallow copy with Object.assign().

let obj = { a: 1, b: 2 };
let copy = Object.assign({}, obj);

The object copy has a new reference but nested objects still share links with the old one.

Copy with the spread operator ...

The spread operator also makes a shallow copy.

let obj = { a: 1, b: 2 };
let copy = { ...obj };

The variable copy now points to a new top-level object. Nested objects still share links with the original one.

Deep copy with structuredClone() and JSON.parse()

You can use structuredClone() to make a deep copy.

let obj = { a: { b: 2 } };
let deep = structuredClone(obj);

You can also use JSON methods for deep copy but they work only for JSON-safe data.

let obj = { a: { b: 2 } };
let deep = JSON.parse(JSON.stringify(obj));

This method does not handle functions or special objects.

Examples of Object References in JavaScript

Simple reference:

let a = { x: 10 };
let b = a;
b.x = 20;
console.log(a.x);

In this case variable a shows the value 20. Both variables point to the same object and one change affects both.

Shallow copy with spread:

let obj = { x: 1, y: { z: 2 } };
let copy = { ...obj };
copy.y.z = 50;
console.log(obj.y.z);

The console shows 50. The spread makes a new top object but nested objects still stay linked to the original one.

Deep copy with structuredClone:

let obj = { user: { name: "Sara" } };
let copy = structuredClone(obj);
copy.user.name = "Omar";
console.log(obj.user.name);

The console shows Sara. The deep copy makes a full new object so nested parts do not stay linked.

JSON deep copy limit:

let obj = { date: new Date(), num: 10 };
let copy = JSON.parse(JSON.stringify(obj));
console.log(copy.date);

The console shows a string instead of a date. JSON copy breaks special types like dates and turns them into plain strings.

Wrapping Up

You learned about object references in JavaScript and ways to copy them.

Here is a quick recap:

  • Shallow copy shares nested data.
  • Deep copy makes full new data, and each method has limits.

FAQs

What is the difference between JavaScript object reference and copy?

JavaScript objects are assigned by reference. A copy may either point to the same object or create a new one.
  • Reference: Both variables point to the same object.
  • Copy: A new object is created with the same values.

let obj1 = {name: "Alex"};
let obj2 = obj1; // reference
obj2.name = "Sam";

console.log(obj1.name); // Sam

How do you create a shallow copy of an object in JavaScript?

You can use Object.assign() or the spread operator to make a shallow copy.

// Using Object.assign()
let obj1 = {age: 25};
let copy1 = Object.assign({}, obj1);

// Using spread operator
let copy2 = {...obj1};
Shallow copy duplicates the first level only.

How do you make a deep copy of an object in JavaScript?

Use structuredClone() or JSON.parse(JSON.stringify()) for deep copies.

// Using structuredClone
let obj1 = { user: { name: "Tom" } };
let deepCopy = structuredClone(obj1);
deepCopy.user.name = "Eva";

console.log(obj1.user.name); // Tom
  1. structuredClone is the modern way.
  2. JSON.parse works but loses methods and special values.

Similar Reads

JavaScript Class and Object Constructors with Examples

Object constructors and class constructors in JavaScript create objects in a structured way. Both provide methods to build reusable code.…

Understanding JavaScript Objects with Examples

JavaScript Objects hold values as key and value pairs, and they help you store and access data. Understand the JavaScript…

JavaScript toSorted Function Guide with Examples

This guide shows how toSorted function works in JavaScript with arrays. It covers syntax, rules, and examples for numbers, text,…

JavaScript Math abs(): How It Works with Examples

Some numbers come from user input and other come from math operations. Sometimes, these numbers need to stay positive. The…

Print in JavaScript Console Using Log, Info, Warn, and Error

The JavaScript console is a tool in web browsers that helps you print the result to the web browser. It…

JavaScript for…in Loop: Iterating Over Objects

You may need to loop through properties when you work with objects in JavaScript. The for...in loop helps you do…

JavaScript Syntax: The Complete Cheat Sheet

JavaScript syntax is what you will use when writing and reading javascript code, it is the foundation of using this…

JavaScript Math asin: How it Works with Examples

Math.asin() finds the arc sine of a number in JavaScript. It helps you work with angles from values. You get…

Understanding Data Types and Conversion in JavaScript

JavaScript works with different kinds of values. Each value has a type, known as a data type. These types help…

JavaScript Unary Operators: How they Work with Examples

Unary operators in JavaScript work with only one value. They can change, test, or change the type of that value,…

Previous Article

PHP array_shift: Remove the First Array Element with Examples

Next Article

HTML Attributes with Examples for Beginners

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *


Subscribe to Get Updates

Get the latest updates on Coding, Database, and Algorithms straight to your inbox.
No spam. Unsubscribe anytime.