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.'); | |
| } |