32

While I was working on a project, I came across this snippet of code:

var params = JSON.parse(JSON.stringify(defaultParams));

Does this code actually do anything?

2
  • 4
    It can create a simple clone of the object. Note the 2nd answer by Corban Brook. Commented Jul 14, 2014 at 19:39
  • 3
    It also validates that the object is serializable (it contains only primitives & no cycles). Commented Jul 14, 2014 at 19:44

2 Answers 2

36

It's a way of cloning an object, so that you get a complete copy that is unique but has the same properties as the cloned object.

var defaultParams = { a : 'b' };
var params = JSON.parse(JSON.stringify(defaultParams));

console.log( params.a ); // b
console.log( defaultParams.a ); // b
console.log( params === defaultParams ); // false

The above outputs false because even though both objects have the a property, with the value b, there are different objects that are independent of each other (they don't refer to the same reference).

The JSON method will only work with basic properties - no functions or methods.

Sign up to request clarification or add additional context in comments.

2 Comments

After years of using this "trick", I just realized - it messes up the date!! I got date property in output object in ISO format, as if I was invoking toISOString() method on it!
More cons of using this method of cloning given here: medium.com/@pmzubar/… It also messes up on NAN and Infinity.
1

You can break the connection between two arrays.

For example:

const bulkAssignTreeView = JSON.stringify(this.bulkAssignTreeViewData);
this.bulkAssignTreeViewData = JSON.parse(bulkAssignTreeView);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.