node-query/node_modules/grunt-jsdoc/node_modules/jsdoc/lib/jsdoc/util/doop.js

39 lines
859 B
JavaScript

/**
Deep clone a simple object.
@private
*/
'use strict';
function doop(o) {
var clone;
var props;
var i;
var l;
if (o instanceof Object && o.constructor !== Function) {
if ( Array.isArray(o) ) {
clone = [];
for (i = 0, l = o.length; i < l; i++) {
clone[i] = (o[i] instanceof Object) ? doop(o[i]) : o[i];
}
}
else {
clone = Object.create( Object.getPrototypeOf(o) );
props = Object.getOwnPropertyNames(o);
for (i = 0, l = props.length; i < l; i++) {
Object.defineProperty(clone, props[i],
Object.getOwnPropertyDescriptor(o, props[i]));
}
}
return clone;
}
return o;
}
// for backwards compatibility
doop.doop = doop;
module.exports = doop;