ITPub博客

首页 > IT职业 > IT职场 > js深拷贝的实现方式

js深拷贝的实现方式

IT职场 作者:flashstone 时间:2021-09-11 10:02:56 0 删除 编辑

在JavaScript数据存储中,我们将数据类型是存储在栈内存中,修改复制后的值不会对原值产生影响。这个实现过程是通过JavaScript的深拷贝实现的。本文介绍js深拷贝的三种实现方式:1、通过js的内置对象JSON来进行数组对象的深拷贝。2、使用递归的方式实现深拷贝。3、借用 JQ 的 extend 方法实现深拷贝。

方式一:通过js的内置对象JSON来进行数组对象的深拷贝。

function deepClone2(obj) {
  var _obj = JSON.stringify(obj),
    objClone = JSON.parse(_obj);
  return objClone;
}

注意:这种方法实现深拷贝只能深拷贝对象的属性,不能将对对象的方法深拷贝。

方式二:使用递归的方式实现深拷贝。

function deepClone(obj) {
	let res = Array.isarray(obj) ? obj : {};
	for (let key in obj){
		if (obj.hasOwnPrototype(key)) {
			if (typeof obj[key] === 'object' && obj[key] !== null) {
				res[key] = deepClone(obj[key]);
			}
		} else {
			res[key] = obj[key];
		}
	}
	return res;
}

方式三:借用 JQ 的 extend 方法实现深拷贝。

$.extend( true, object1, object2 ); // 深度拷贝
$.extend( object1, object2 );  // 浅拷贝
//
var array = [1,2,3,4];
var newArray = $.extend(true,[],array);

以上就是小编整理总结的js深拷贝的三种实现方式,大家可以选择自己喜欢的方式使用哦~更多js学习推荐:js教程。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3378/viewspace-2831258/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: js数组求和reduce
下一篇: js定时器清除
请登录后发表评论 登录
全部评论

注册时间:2019-08-14

  • 博文量
    72
  • 访问量
    562