javascript深拷贝是什么及怎么用
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,今天小编给大家分享一下javascript深拷贝是什么及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2025年02月03日javascript深拷贝是什么及怎么用
今天小编给大家分享一下javascript深拷贝是什么及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
要讲JavaScript的拷贝,就得先讲讲javascript中的值传递和引用传递。
javascript中没有一个具体的语法来规定哪些参数是引用传递,而其他语言中都有明文规定,比如 C# 中的 ref 和 PHP 中的 & 。
这也是javascript众多弊端中的一个。
我们先看看下面这段代码:
//值传递var i = 3;var j = i;j = 4;[xss_clean](i);//3//引用传递var m = [1];var n = m;n[0] = 2;[xss_clean](n[0]);//2
说明,javascript中只有简单类型是值传递,而其他复杂类型比如数组、对象都是默认就是引用传递的。
那么我们如果需要复制一个对象呢?就必须自己定义方法:
//深度拷贝函数,其实就是值传递function cloneObject(srcobj){ var tarobj=new Object(); for(var key in srcobj){//判断对象中是否继续为对象 tarobj[key]=typeof srcobj[key]==='object'?cloneObject(srcobj[key]):srcobj[key]; } return tarobj;}//验证深度拷贝函数的使用// 测试用例:var srcObj = { a: 1, b: { b1: ["hello", "hi"], b2: "JavaScript" }};var abObj = srcObj;//引用传递var tarObj = cloneObject(srcObj);srcObj.a = 2;srcObj.b.b1[0] = "Hello";console.log(abObj.a);//2console.log(abObj.b.b1[0]);//Hello,说明普通的=是一种引用传递console.log(tarObj.a); // 1console.log(tarObj.b.b1[0]); // "hello",说明我们定义的深拷贝是值传递
其实就是通过实例化一个新的对象,从而在堆中开辟一块新的内存空间,使得栈中的变量名指向堆中的新内容。
以上就是"javascript深拷贝是什么及怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
拷贝
对象
就是
知识
篇文章
内容
函数
深度
类型
不同
复杂
很大
普通
代码
内存
参数
变量
只有
大部分
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发的主要方法有哪些
妙医生总是提示服务器错误
陆华互联网科技
软件开发培训受人欢迎
数据库技能练习题下载
中国互联网科技公司有几家
农村金融经济数据库
中智软件开发有限公司招聘
学历适合用什么数据库类型
服务器负荷可视化
计算机网络技术专业是什么系
中国视频压缩软件开发
网络安全诈骗案件
三层网络技术零基础视频教程
网络安全核武库
软件开发人员选择优盘还是硬盘好
服务器 渗透
网络安全计费系统的发展
数据库设计 pdf
数据库java存储过程
游戏服务器错误1005怎么解决
妙医生总是提示服务器错误
全国渔船数据库
软件开发属于什么性质的公司
阿里云购买服务器
南京福德龙软件开发
服务器备份软件c
地籍数据库 不动产
上海嵌入式软件开发大概要多少钱
浙江水性软件开发批发