MCPcopy
hub / github.com/TargetProcess/tauCharts / deepClone

Function deepClone

examples/index.js:617–657  ·  view source on GitHub ↗
(src, refs)

Source from the content-addressed store, hash-verified

615 }
616
617 function deepClone(src, refs) {
618 if (typeof src !== 'object' || src === null) {
619 return src;
620 }
621 refs = refs || new Map();
622 if (refs.has(src)) {
623 return refs.get(src);
624 }
625 var result;
626 if (Array.isArray(src)) {
627 result = [];
628 refs.set(src, result);
629 src.forEach(function (d) {
630 result.push(deepClone(d, refs));
631 });
632 } else if (src instanceof Date) {
633 result = new Date(src.getTime());
634 refs.set(src, result);
635 } else if (src instanceof Node) {
636 result = src.cloneNode(true);
637 refs.set(src, result);
638 } else if (src instanceof String || src instanceof Boolean || src instanceof Number) {
639 var Ctor = Object.getPrototypeOf(src).constructor;
640 result = new Ctor(src);
641 refs.set(src, result);
642 } else {
643 Ctor = Object.getPrototypeOf(src).constructor;
644 result = new Ctor();
645 refs.set(src, result);
646 Object.setPrototypeOf(result, Object.getPrototypeOf(src));
647 var props = Object.getOwnPropertyNames(src);
648 for (var i = 0, dtor, len = props.length; i < len; i++) {
649 dtor = Object.getOwnPropertyDescriptor(src, props[i]);
650 if ('value' in dtor) {
651 dtor.value = deepClone(dtor.value, refs);
652 }
653 Object.defineProperty(result, props[i], dtor);
654 }
655 }
656 return result;
657 }
658
659 function stringifyURIQuery(obj) {
660 var params = [];

Callers 1

index.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected