全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript对象引用与赋值实例详解

本文实例讲述了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引用赋值与传值赋值总结  # 的是  # 遍历  # 其时  # 而不是  # 是一个  # 相关内容  # 大家都  # 也就  # 才会  # 把它  # 感兴趣  # 数据结构  # 我用  # 给了  # 不受  # 给大家  # 会对  # 更多关于  # 又把  # 真要 


相关文章: 如何自定义建站之星模板颜色并下载新样式?  活动邀请函制作网站有哪些,活动邀请函文案?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  C++如何编写函数模板?(泛型编程入门)  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  北京网站制作的公司有哪些,北京白云观官方网站?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  北京的网站制作公司有哪些,哪个视频网站最好?  制作网页的网站有哪些,电脑上怎么做网页?  怀化网站制作公司,怀化新生儿上户网上办理流程?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何用花生壳三步快速搭建专属网站?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  香港服务器部署网站为何提示未备案?  如何选择网络建站服务器?高效建站必看指南  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  免费视频制作网站,更新又快又好的免费电影网站?  网站制作网站,深圳做网站哪家比较好?  b2c电商网站制作流程,b2c水平综合的电商平台?  兔展官网 在线制作,怎样制作微信请帖?  如何基于云服务器快速搭建网站及云盘系统?  购物网站制作公司有哪些,哪个购物网站比较好?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  建站之星代理费用多少?最新价格详情介绍  历史网站制作软件,华为如何找回被删除的网站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  定制建站如何定义?其核心优势是什么?  建站之星2.7模板:企业网站建设与h5定制设计专题  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站之星云端配置指南:模板选择与SEO优化一键生成  如何用狗爹虚拟主机快速搭建网站?  临沂网站制作企业,临沂第三中学官方网站?  孙琪峥织梦建站教程如何优化数据库安全?  微信h5制作网站有哪些,免费微信H5页面制作工具?  制作电商网页,电商供应链怎么做?  如何用PHP工具快速搭建高效网站?  如何在橙子建站中快速调整背景颜色?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  南宁网站建设制作定制,南宁网站建设可以定制吗?  江苏网站制作公司有哪些,江苏书法考级官方网站?  大同网页,大同瑞慈医院官网?  如何在云主机上快速搭建多站点网站?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  建站之星安装后界面空白如何解决?  建站之星安装需要哪些步骤及注意事项?  如何选择靠谱的建站公司加盟品牌?  如何用美橙互联一键搭建多站合一网站?  如何确保FTP站点访问权限与数据传输安全?  装修招标网站设计制作流程,装修招标流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。