深拷貝和淺拷貝的區別:深拷貝和淺拷貝的使用場景是在複雜對象裏,即對象的屬性仍是對象,
淺拷貝是指只複製一層對象,當對象的屬性是引用類型時,實質複製的是其引用,當引用指向的值改變時也會跟着變化
//深拷貝對象 function deepCopy(value){ if(typeof value != 'object'){ return value; } let o = value.constructor == Array ? [] :{}; if(o instanceof Array){ for(let key of Object.keys(value)){ o[key] = deepCopy(value[key]); } }else{ for(let i in value){ o[i] = deepCopy(value[i]); } } return o; } let a=[11,[2,3,[4]],5,7,[9]]; let b = { a:{g:6}, b:1, c:{ d:{ e:4 }, f:5 } } let c = deepCopy(a); let d = deepCopy(b); //淺拷貝,只copy第一層的屬性值,若是屬性值是對象,則複製的是這個對象的引用。 function shallowCopy(src) { var dst = {}; for (var prop in src) { if (src.hasOwnProperty(prop)) { dst[prop] = src[prop]; } } return dst; }