JSFiddle - React, Tailwind, and code Playground

JavaScript

function structuredClone_replaceState(obj) {
    var oldState = history.state;
    history.replaceState(obj, null);
    var clonedObj = history.state;
    history.replaceState(oldState, null);
    return clonedObj;
}

var original = { date: new Date(), number: Math.random() };
original.self = original;

var clone = structuredClone_replaceState(original);

// They're different objects:
console.log(original !== clone);
console.log(original.date !== clone.date);

// They're cyclical:
console.log(original.self === original);
console.log(clone.self === clone);

// They contain equivalent values:
console.log(original.number === clone.number);
console.log(Number(original.date) === Number(clone.date));