Skip to content

Instantly share code, notes, and snippets.

@blarfoon
Last active February 22, 2022 00:12
Show Gist options
  • Save blarfoon/c8abd25f00e71942d9900ef90f878d17 to your computer and use it in GitHub Desktop.
Save blarfoon/c8abd25f00e71942d9900ef90f878d17 to your computer and use it in GitHub Desktop.
function clone(src) {
const ret = src instanceof Array ? [] : {};
for (const key in src) {
if (!src.hasOwnProperty(key)) {
continue;
}
let val = src[key];
if (val && typeof val == "object") {
val = clone(val);
}
ret[key] = val;
}
return ret;
}
const myObject = {
hi: "mom",
changeHi() {
this.hi = "medium";
},
something: undefined,
};
console.log(myObject); // > {hi: "mom", something: undefined, changeHi: ƒ}
const myNewObject = clone(myObject);
myNewObject.changeHi();
console.log(myNewObject); // > {hi: "medium", something: undefined, changeHi: ƒ}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment