Book Image

Advanced JavaScript

By : Zachary Shute
Book Image

Advanced JavaScript

By: Zachary Shute

Overview of this book

If you are looking for a programming language to develop flexible and efficient applications, JavaScript is an obvious choice. Advanced JavaScript is a hands-on guide that takes you through JavaScript and its many features, one step at a time. You'll begin by learning how to use the new JavaScript syntax in ES6, and then work through the many other features that modern JavaScript has to offer. As you progress through the chapters, you’ll use asynchronous programming with callbacks and promises, handle browser events, and perform Document Object Model (DOM) manipulation. You'll also explore various methods of testing JavaScript projects. In the concluding chapters, you'll discover functional programming and learn to use it to build your apps. With this book as your guide, you'll also be able to develop APIs using Node.js and Express, create front-ends using React/Redux, and build mobile apps using React/Expo. By the end of Advanced JavaScript, you will have explored the features and benefits of JavaScript to build small applications.
Table of Contents (9 chapters)

Chapter 5: Functional Programming


Activity 5 – Recursive Immutability

You are building an application in JavaScript and your team has been told that it cannot use any third-party libraries for security reasons. You must now use Functional Programming (FP) principles for this application and you need an algorithm to create immutable objects and arrays. Create a recursive function that enforces the immutability of objects and arrays at all levels of nesting with Object.freeze(). For simplicity, you can assume that there are no null or classes nested in the objects. Write your function in activities/activity5/activity-test.js. This file contains code to test your implementation.

To demonstrate forcing immutability in objects, follow these steps:

  1. Open the activity test file at activities/activity5/activity-test.js.

  2. Create a function called immutable that takes in a single argument, data.

  3. Check to see if data is not of type object. If it is not, then return.

  4. Freeze the data object. You don't need to freeze non-objects.

  5. Loop through the object values with object.values and a forEach() loop. Recursively call the immutable function for each.

  6. Run the code contained in the test file. If any tests fail, fix the bugs and rerun the test

Code:

activity-solution.js
function immutable( data ) {
 if ( typeof data !== 'object' ) {
   return;
 }
 Object.freeze( data );
 Object.values( data ).forEach( immutable );
}

Snippet 5.11: Recursive immutability

Take a look at the following output screenshot below:

Figure 5.7 : Passed Tests output display

Outcome:

You have successfully demonstrated forcing immutability in objects.