如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。
目录
一、实现
function deepClone(obj) { // if not object if (typeof obj !== 'object') { throw new TypeError('You should pass in an Object parameter') } // if null if (obj === null) { return null } // if array if (Array.isArray(obj)) { return obj.map((elem, idx) => deepClone(elem)) } // if obj const tempObj = {} for (const key in obj) { if (obj.hasOwnProperty(key)) { tempObj[key] = deepClone(obj[key]) } } return tempObj }
二、参考
- 【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法:https://www.cnblogs.com/echolun/p/7889848.html