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

发布时间 - 2026-01-11 00:11:15    点击率:

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


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  常州企业网站制作公司,全国继续教育网怎么登录?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何用AI帮你把自己的生活经历写成一个有趣的故事?  浅析上传头像示例及其注意事项  如何用景安虚拟主机手机版绑定域名建站?  如何挑选高效建站主机与优质域名?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在阿里云域名上完成建站全流程?  如何确认建站备案号应放置的具体位置?  Laravel API资源类怎么用_Laravel API Resource数据转换  深圳网站制作培训,深圳哪些招聘网站比较好?  如何在宝塔面板中修改默认建站目录?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  个人网站制作流程图片大全,个人网站如何注销?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Laravel如何升级到最新版本?(升级指南和步骤)  Python正则表达式进阶教程_复杂匹配与分组替换解析  如何快速搭建高效可靠的建站解决方案?  Laravel怎么实现验证码(Captcha)功能  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何快速查询网址的建站时间与历史轨迹?  香港服务器租用每月最低只需15元?  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何创建自定义中间件?(Middleware代码示例)  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何确保西部建站助手FTP传输的安全性?  如何快速生成可下载的建站源码工具?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  🚀拖拽式CMS建站能否实现高效与个性化并存?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  高防服务器:AI智能防御DDoS攻击与数据安全保障  历史网站制作软件,华为如何找回被删除的网站?  利用python获取某年中每个月的第一天和最后一天  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何实现建站之星域名转发设置?  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  EditPlus中的正则表达式 实战(1)  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何在服务器上配置二级域名建站?  如何撰写建站申请书?关键要点有哪些?  JavaScript如何实现路由_前端路由原理是什么  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧