首先深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。
浅拷贝
浅拷贝就是把父对像的属性,全部拷贝给子对象。var Chinese = { nation:'中国'}var Doctor = { career:'医生'} function extendCopy(p) { var c = {}; for (var i in p) { c[i] = p[i]; } c.uber = p; return c; }Chinese.birthPlaces = ['北京','上海','香港'];var Doctor = extendCopy(Chinese);Doctor.birthPlaces.push('厦门');Doctor.career = '医生';alert(Doctor.nation); // 中国alert(Doctor.birthPlaces); //北京, 上海, 香港, 厦门alert(Chinese.birthPlaces); //北京, 上海, 香港, 厦门`
深拷贝:
递归调用”浅拷贝,复制了所有层级对象的属性