js 深度克隆
js中赋值主要有两种赋值形式,一种是值引用,另一种是址引用(地址)。 一般对象赋值的时候,都是地址引用,所以在修改新对象的时候,其实修改了在内存区地址上的值。 为了达到值引用的效果,所以有 深度克隆的概念。 ps:自己理解的,被误导了别怪我 实现方式一: function deepClone(origin, target) { var target = target || {}, toStr = Object.prototype.toString, arrStr = '[object Array]'; for (var prop in origin) { if (origin.hasOwnProperty(prop)) { if (origin[prop] !== 'null' && typeof (origin[prop]) == 'object') { if (toStr.call(origin[prop]) == arrStr) { target[prop] = [] } else { target[prop] = {} } deepClone(origin[prop], target[prop]) } } else { target[prop] = origin[prop]; } } return target; } 实现方式二:利用JSON转换 function