深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。这是我们之前深拷贝封装的函数,代码如下,浅拷贝就没必要再贴出来吧 function clone(obj) { /// <summary> /// 把对象复制,返回 /// </summary> /// <param name="obj" type="object">源对象</param> var o; switch(typeof obj){ case 'undefined': break; case 'string' : o = obj + '';break; case 'number' : o = obj - 0;break; case 'boolean' : o = obj;break; case 'object' : if(obj === null){ o = null; }else{ if(obj instanceof Array){ o=[]; //o= obj.slice(0), 注意了这里不能直接使用这个复制,如果数组中的元素为对象,复制是不成功的 for(var i=0;i<obj.length;i++) { o.push(clone(obj[i])); } }else{ o = {}; for(var k in obj){ o[k] = clone(obj[k]); } } } break; default: o = obj;break; } return o; }
深复制和浅复制只针对像 Object, Array 这样的复杂对象的。简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级。
这是我们之前深拷贝封装的函数,代码如下,浅拷贝就没必要再贴出来吧