Spaces:
Sleeping
Sleeping
module.exports = clone; | |
// via http://stackoverflow.com/a/728694/22617 | |
function clone(obj) { | |
// Handle the 3 simple types, and null or undefined | |
if (null === obj || 'object' !== typeof obj) { | |
return obj; | |
} | |
var copy; | |
// Handle Date | |
if (obj instanceof Date) { | |
copy = new Date(); | |
copy.setTime(obj.getTime()); | |
return copy; | |
} | |
// Handle Array | |
if (obj instanceof Array) { | |
copy = []; | |
for (var i = 0, len = obj.length; i < len; i++) { | |
copy[i] = clone(obj[i]); | |
} | |
return copy; | |
} | |
// Handle Object | |
if (obj instanceof Object) { | |
copy = {}; | |
for (var attr in obj) { | |
if (obj.hasOwnProperty && obj.hasOwnProperty(attr)) { | |
copy[attr] = clone(obj[attr]); | |
} | |
} | |
return copy; | |
} | |
throw new Error('Unable to copy obj! Its type isn\'t supported.'); | |
} |