var MyObject = {
description: 'Creates a deep copy of source, which should be an object or an array.',
myNumber: 123456789,
myBoolean: true,
jayson: {
stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
parse: 'JSON.parse() method parses a JSON string...'
}
};
var myCopy = null;
var rfdcClone = rfdc();
function recursiveDeepCopy(value) {
if (value instanceof Date) {
return new Date(value);
}
if (value instanceof RegExp) {
return new RegExp(value);
}
if (value instanceof Map) {
return new Map(value);
}
if (value instanceof Set) {
return new Set(value);
}
if (typeof value !== 'object') {
return value;
}
if (!value) {
return value;
}
let newObject;
if ('[object Array]' === Object.prototype.toString.apply(value)) {
newObject = [];
for (let i = 0; i < value.length; i += 1) {
newObject[i] = recursiveDeepCopy(value[i]);
}
return newObject;
}
newObject = {};
for (let i in value) {
if (value.hasOwnProperty(i)) {
newObject[i] = recursiveDeepCopy(value[i]);
}
}
return newObject;
}