JSFiddle - React, Tailwind, and code Playground
JavaScript
var deepClone = function (obj) {
try {
var names = Object.getOwnPropertyNames(obj);
} catch (e) {
if (e.message.indexOf("not an object") > -1) {
// is not object
return obj;
}
}
var proto = Object.getPrototypeOf(obj);
var clone = Object.create(proto);
names.forEach(function (name) {
var pd = Object.getOwnPropertyDescriptor(obj, name);
if (pd.value) {
pd.value = deepClone(pd.value);
}
Object.defineProperty(clone, name, pd);
});
return clone;
};
var arr = [1,2,3];
obj = { bar: { foo: 42 } };
console.log(deepClone(42));
console.log(deepClone("foobar"));
console.log(deepClone(true));
console.log(carr = deepClone(arr));
console.log(cobj = deepClone(obj));
cobj.bar.foo = 0;
console.log(obj.bar.foo === 42);
carr[3] = 4;
console.log(carr.length === 4);