本文实例讲述了JavaScript对象引用与赋值。分享给大家供大家参考,具体如下:
<script type="text/javascript"> //例子一: 引用 var myArrayRef = new Array(0,1,2); //创建数组对象 var mySeconArrayRef = myArrayRef; // 对象复制. myArrayRef[0] = 100; // 修改元素值 alert(mySeconArrayRef[0]); /** * 输出 100; 学过其它语言的都应该知道这里应该输出的是0 为什么输出的是100呢? * 上面程序通过把myArrayRef对象复制给了mySeconArrayRef这时就存在了2个独立的 但最初值是相同的对象 * 因为是独立的为什么修改myArrayRef会对别一个对象有影响呢?大家都知道只有当他们引用的是同一个对象时这时修改一个才会 * 对别一个产生影响.但是在javascript语言中创建的对象myArrayRef值中其时保存的是对象的引用(也就是一个地址). * 也就是 我用 new Array生成的保存在内存中而new Array把它所在的地方告诉了myArrayRef,myArrayRef又把这地址告诉了mySeconArrayRef * 他们两个都指向的是new Array生成对象的地址而不是把对象保存在myArrayRef中,所以通过其中的一个去修改值时其时是修改他们同指象的那对象. */ alert(mySeconArrayRef[0] ); //例子二: 赋值 var myVa = 'ABC'; //把ABC的值 赋予了myVa var myVb = myVa; // myVa 赋值给 myVb myVa = 'DEF'; //修改myVa /** * 输出的是:ABC. 因为是把值保存在了变量了 而不是保存的是引用地址,所以他们两个是相对独立的整体. */ alert(myVb); </script>
如果真要复制对象互不影响,则要通过转换赋值或者遍历key:value来复制你中的方法和属性。
注意:对象的子对象也是引用,所以遍历赋值的时候要判断,子元素是否是对象,如果子元素是对象,则继续对子元素进行遍历赋值。
转换赋值方式:
var data = {a:1,b:2,c:3,d:[0,1,2,3]};
var str = JSON.stringify(data);
var data1 = $.parseJSON(str); //$为jQuery对象需要引入jQuery包
data1["e"] = 4;
data1["d"][0] = 11;
console.log(data);
console.log(data1);
输出结果:
{a: 1, b: 2, c: 3, d: [0,1,2,3]}
{a: 1, b: 2, c: 3, d: [11,1,2,3], e: 4}
相互没有影响
当对象引用做为函数参数传递时候,依然会相互影响,切记,如下示例:
var data = {a:1,b:2,c:3,d:{q:4,w:5,e:6}};
var data1 = data;
function con(data2){
data2["r"] = 5;
console.log(JSON.stringify(data2));
}
con(data1);
console.log(JSON.stringify(data));
输出结果:
{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
对象引用赋值后,如果将对象置空,相互间是不受影响的,如下:
var arr = {"a":"1","b":"2"};
var arr1 = arr;
arr = {};
arr["a"] = 2;
console.log(arr1);
console.log(arr);
输出结果:
{"a":"1","b":"2"},{"a":2}
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JavaScript
# 对象
# 引用
# 赋值
# javascript引用赋值(地址传值)用法实例
# JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
# ExtJs异步无法向外传值和赋值的完美解决办法
# JavaScript引用赋值与传值赋值总结
# 的是
# 遍历
# 其时
# 而不是
# 是一个
# 相关内容
# 大家都
# 也就
# 才会
# 把它
# 感兴趣
# 数据结构
# 我用
# 给了
# 不受
# 给大家
# 会对
# 更多关于
# 又把
# 真要
相关文章:
股票网站制作软件,网上股票怎么开户?
如何选择高效可靠的多用户建站源码资源?
如何在企业微信快速生成手机电脑官网?
建站之星如何快速生成多端适配网站?
如何在宝塔面板创建新站点?
Swift中swift中的switch 语句
如何在腾讯云免费申请建站?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
c# 在高并发场景下,委托和接口调用的性能对比
如何在云主机上快速搭建网站?
如何在Windows服务器上快速搭建网站?
建站之星北京办公室:智能建站系统与小程序生成方案解析
高端建站三要素:定制模板、企业官网与响应式设计优化
怀化网站制作公司,怀化新生儿上户网上办理流程?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
建站之星下载版如何获取与安装?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
建站主机如何安装配置?新手必看操作指南
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
建站之星备案是否影响网站上线时间?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何使用Golang table-driven基准测试_多组数据测量函数效率
如何在阿里云香港服务器快速搭建网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
移民网站制作流程,怎么看加拿大移民官网?
如何制作算命网站,怎么注册算命网站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过服务器快速搭建网站?完整步骤解析
如何快速生成可下载的建站源码工具?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
高性价比服务器租赁——企业级配置与24小时运维服务
建站主机如何选?高性价比方案全解析
如何高效配置IIS服务器搭建网站?
C++中引用和指针有什么区别?(代码说明)
如何在IIS服务器上快速部署高效网站?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
智能起名网站制作软件有哪些,制作logo的软件?
如何在橙子建站上传落地页?操作指南详解
建站主机是否属于云主机类型?
c# await 一个已经完成的Task会发生什么
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
建站之星安装路径如何正确选择及配置?
高防服务器租用如何选择配置与防御等级?
SQL查询语句优化的实用方法总结
制作农业网站的软件,比较好的农业网站推荐一下?
建站与域名管理如何高效结合?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
魔方云NAT建站如何实现端口转发?
*请认真填写需求信息,我们会在24小时内与您取得联系。