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


Posted in Javascript onMarch 15, 2017

本文实例讲述了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 Tab 导航插件 (23个)
Jun 11 Javascript
利用函数的惰性载入提高javascript代码执行效率
May 05 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
常用jQuery代码分享
Jul 14 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
js实现千分符和保留几位小数的简单实例
Aug 01 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
Mar 03 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
Sep 19 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
vue双向绑定数据限制长度的方法
Nov 04 Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 #Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 #Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 #Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 #Javascript
jQuery动态产生select option下拉列表
Mar 15 #Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
Mar 15 #Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
Mar 15 #Javascript
You might like
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
php提取微信账单的有效信息
2018/10/01 PHP
jQuery 1.0.2
2006/10/11 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
Python中__call__用法实例
2014/08/29 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
python中pop()函数的语法与实例
2020/12/01 Python
Python 里最强的地图绘制神器
2021/03/01 Python
销售人员个人求职信
2013/09/26 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
班委竞选演讲稿
2014/04/28 职场文书
技术比武方案
2014/05/19 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
员工教育培训协议书
2014/09/27 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
雷锋的故事观后感
2015/06/10 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
Win11快速关闭所有广告推荐
2022/04/19 数码科技