千家信息网

javascript深拷贝应用实例分析

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本文小编为大家详细介绍"javascript深拷贝应用实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"javascript深拷贝应用实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2024年11月23日javascript深拷贝应用实例分析

本文小编为大家详细介绍"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安全错误 数据库的锁怎样保障安全 锦州银行最新软件开发项目 市民卡软件开发 家长培养孩子网络安全意识 湖南潮流软件开发服务推广 网络安全保密机制 网络安全监测装置部署南瑞 实惠的贸易软件开发机构 好玩的电脑服务器我的世界 access数据库加密代码 redis是不是服务器应用软件 官渡区综合软件开发厂家价格 触摸屏系统不支持数据库类型 宜昌放心的软件开发价格 数据库自动生成uuid 上海北斗时钟监控网管服务器 租用阿里云服务器 flask 数据库同步 上海邮乐网络技术公司 电子邮件系统网络安全防护 数据库所有应用 沈阳大图时代网络技术有限公司 游戏网络终端服务器FD118 美国的网络安全法案 网络安全宣传周国旗下讲话稿 哪个dns服务器好 松江区品牌软件开发服务报价表 进口网络技术开发货源充足 erp系统备用服务器 扬州营销软件开发创新服务 青浦区品牌软件开发价格咨询
0