JSFiddle - React, Tailwind, and code Playground
JavaScript
var cloneObj = function(obj){
if(obj === null || typeof obj !== 'object') return obj;
var temp = obj.constructor(); // give temp the original obj's constructor
for (var key in obj) {
temp[key] = cloneObj(obj[key]);
}
return temp;
};
var original = {
a: ko.observable("a"),
b: "b"
};
var cloned = cloneObj(original);
cloned.a("a cloned");
original.a();
console.log(cloned.a(), original.a()); //-> a cloned, a ERROR
original.a("a original");
console.log(cloned.a(), original.a()); //-> a cloned, a original ERROR
cloned.b = "b cloned";
console.log(cloned.b, original.b); //-> b cloned, b OK
original.b = "b original";
console.log(cloned.b, original.b); //-> b cloned, b original OK