Test name | Executions per second |
---|---|
Using the spread operator | 7488010.0 Ops/sec |
Using cloneDeep | 6322747.0 Ops/sec |
function cloneDeep(obj) {
if (typeof obj !== 'object' || obj === null) return obj;
let cloned, i;
if (obj instanceof Date) {
cloned = new Date(obj.getTime());
return cloned;
}
if (obj instanceof Array) {
let l;
cloned = [];
for (i = 0, l = obj.length; i < l; i++) cloned[i] = cloneDeep(obj[i]);
return cloned;
}
cloned = {};
for (i in obj) if (obj.hasOwnProperty(i)) cloned[i] = cloneDeep(obj[i]);
return cloned;
}
const car = {type:"Fiat", model:"500", color:"white"};
let carCopy = {
car,
type:"Ford"
};
const car = {type:"Fiat", model:"500", color:"white"};
let carCopy = cloneDeep(car)
carCopy.type = "Ford"