UNPKG

jsondiffpatch

Version:
41 lines (36 loc) 825 B
var isArray = (typeof Array.isArray === 'function') ? // use native function Array.isArray : // use instanceof operator function(a) { return a instanceof Array; }; function cloneRegExp(re) { var regexMatch = /^\/(.*)\/([gimyu]*)$/.exec(re.toString()); return new RegExp(regexMatch[1], regexMatch[2]); } function clone(arg) { if (typeof arg !== 'object') { return arg; } if (arg === null) { return null; } if (isArray(arg)) { return arg.map(clone); } if (arg instanceof Date) { return new Date(arg.getTime()); } if (arg instanceof RegExp) { return cloneRegExp(arg); } var cloned = {}; for (var name in arg) { if (Object.prototype.hasOwnProperty.call(arg, name)) { cloned[name] = clone(arg[name]); } } return cloned; } module.exports = clone;