-
Object.assign()实现浅拷贝及一层的深拷贝
-
使用JSON.stringify和JSON.parse实现深拷贝:JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象;
-
热门的函数库lodash,也有提供_.cloneDeep用来做深拷贝;
-
jquery 提供一个
$.extend
可以用来做深拷贝; -
使用Object.create()方法
直接使用var newObj = Object.create(oldObj),可以达到深拷贝的效果。
/* ================ 深拷贝 ================ */ function deepClone(initalObj, finalObj) { var obj = finalObj || {}; for (var i in initalObj) { var prop = initalObj[i]; // 避免相互引用对象导致死循环,如initalObj.a = initalObj的情况 if(prop === obj) {continue; } if (typeof prop === 'object') { obj[i] = (prop.constructor === Array) ? [] : Object.create(prop); } else { obj[i] = prop; } } return obj; }
JS深拷贝和浅拷贝的实现
最新推荐文章于 2022-07-14 10:08:59 发布