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