浅克隆:只克隆一个维度;深克隆:可克隆多个维度。在一lodash工具库下有很多JS工具类函数的实现,开发时可以借鉴。
- JS深克隆函数封装如下:
function deepClone(obj){ // 过滤特殊情况 if(obj === null) return obj; if(typeof obj !== 'object') return obj; if(obj instanceof RegExp){ return new RegExp(obj); } if(obj instanceof Date){ return new Date(obj); } if(obj instanceof Function){ return new Function(obj); } //不直接创建空对象的目的:使克隆出来的对象跟原对象是相同的类 let newObj = new obj.constructor; for( let key in obj) { if(obj.hasOwnProperty(key)){ newObj[key] = deepClone(obj[key]); } } return newObj; }