Run details:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
Chrome 102
Windows
Desktop
2 years ago
Test name Executions per second
Using the spread operator 54393304.0 Ops/sec
Using cloneDeep 1477223.4 Ops/sec
Script Preparation code:
x
 
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;
}
Tests:
  • Using the spread operator

     
    const car = {type:"Fiat", model:"500", color:"white"};
    let carCopy = {
        ...car,
        type:"Ford"
    };
  • Using cloneDeep

     
    const car = {type:"Fiat", model:"500", color:"white"};
    let carCopy = cloneDeep(car)
    carCopy.type = "Ford"