如何理解JavaScript数组及非数组对象的深浅克隆原理
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"如何理解JavaScript数组及非数组对象的深浅克隆原理",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解JavaScrip
千家信息网最后更新 2026年11月02日如何理解JavaScript数组及非数组对象的深浅克隆原理
这篇文章主要讲解了"如何理解JavaScript数组及非数组对象的深浅克隆原理",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解JavaScript数组及非数组对象的深浅克隆原理"吧!
什么是浅克隆、深克隆
浅克隆:直接将存储在栈中的值赋值给对应变量,如果是基本数据类型,则直接赋值对应的值,如果是引用类型,则赋值的是地址。
深克隆:将数据赋值给对应的变量,从而产生一个与源数据不相干的新数据(数据地址已变化)。即对象各个层级的属性。
JavaScript中基本数据类型使用符号"="可以进行克隆,引用数据类型使用符号"="只是改变了变量的指向,并没有进行真正的克隆操作。
1.对数组进行克隆
1.1 浅克隆
使用for循环进行浅克隆。
var arr1 = ['demo', 1, 2];var arr2 = [];// 数组的浅克隆for (var i = 0; i < arr1.length; i++) { arr2[i] = arr1[i];}console.log(arr2);console.log(arr1 == arr2);输出结果:
Array(3)0: "demo"1: 12: 2length: 3[[Prototype]]: Array(0)
false
1.2 深克隆
使用递归进行深克隆。
function deepClone(o) { var result = []; for (var i = 0; i < o.length; i++) { result.push(deepClone(o[i])); } return result;}2.对非数组对象进行克隆
2.1 浅克隆
使用for循环进行浅克隆。
var obj1 = { a: 1, b: 2, c: 3, d: [4, 5, { e: 'demo' }] };var obj2 = {};// 对象的浅克隆for (var i in obj1) { obj2[i] = obj1[i];}console.log(obj2);console.log(obj1 == obj2);输出结果:
{a: 1, b: 2, c: 3, d: Array(3)}
false
2.2 深克隆
使用递归进行深克隆。
function deepClone(o) { var result = {}; for (var i in o) { result[i] = deepClone(o[i]); } return result;}3.整合深克隆函数
var obj1 = { a: 1, b: 2, c: 3, d: [4, 5, { e: 'demo' }] };var arr1 = ['demo', 1, 2];// 深克隆function deepClone(o) { if (Array.isArray(o)) { // 是数组 var result = []; for (var i = 0; i < o.length; i++) { result.push(deepClone(o[i])); } } else if (typeof o == 'object') { // 非数组,是对象 var result = {}; for (var i in o) { result[i] = deepClone(o[i]); } } else { // 基本类型值 var result = o; } return result;}console.log(deepClone(arr1));console.log(deepClone(obj1));感谢各位的阅读,以上就是"如何理解JavaScript数组及非数组对象的深浅克隆原理"的内容了,经过本文的学习后,相信大家对如何理解JavaScript数组及非数组对象的深浅克隆原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
数组
对象
数据
类型
原理
深浅
变量
学习
内容
地址
符号
结果
递归
循环
输出
不相干
函数
只是
就是
层级
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网项目
互联网 的科技创新
齐家互联网科技
互联网金融科技平台
广州凡科互联网科技
郑州华宇互联网科技
互联网科技汛
互联网科技公司介绍
互联网汽车科技小镇
济南华为互联网科技产业总部基地
中国的互联网科技企业的崛起
字节跳动和互联网科技
千方科技属于互联网企业吗
互联网科技扶贫时间
企晟互联网信息科技有限公司
广州燕处互联网科技有限公司
全球科技与互联网公司市值变化
兰石爱特工业互联网科技分公司
科技和互联网行业的特点
互联网企业和网络科技有限公司
百单网互联网科技有限公司怎么样
互联网巨头科技公司
上海卓越科技 互联网
居家互联网科技有限公司
互联网和黑科技的看法
互联网对科技的发展
港股科技和互联网
阿大互联网科技有限公司
互联网新科技动漫ppt素材
上海乐五互联网科技有限公司