技术文章 > Web开发 >  JavaScript > 正文

js深拷贝的实现方式

宋宋大人

在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教程

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 js中怎么比较两个日期
 js日期格式化format
 js中splice删除数组多个元素
 js中splice和slice区别
 js中slice() 方法改变原数组吗
相关视频章节
 解决提示“‘python’不是内部或外外部命令
 python代码缩进
 python命名规范
作者信息
视频教程分类