improve doop module

This commit is contained in:
Jeff Williams 2013-06-23 20:29:20 -07:00
parent 44d9ec6831
commit 06565a11b0

View File

@ -4,7 +4,6 @@
*/ */
function doop(o) { function doop(o) {
var clone; var clone;
var descriptor;
var props; var props;
var i; var i;
var l; var l;
@ -17,17 +16,11 @@ function doop(o) {
} }
} }
else { else {
// TODO: replace some of this with Object.create()? clone = Object.create(o);
// TODO: are we getting circular refs, etc., because we're not calling doop() on the
// descriptor?
clone = {};
props = Object.getOwnPropertyNames(o); props = Object.getOwnPropertyNames(o);
for (i = 0, l = props.length; i < l; i++) { for (i = 0, l = props.length; i < l; i++) {
descriptor = Object.getOwnPropertyDescriptor(o, props[i]); Object.defineProperty(clone, props[i],
if (descriptor.value instanceof Object) { Object.getOwnPropertyDescriptor(o, props[i]));
descriptor.value = doop(descriptor.value);
}
Object.defineProperty(clone, props[i], descriptor);
} }
} }