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 相关文章推荐
js 上传图片预览问题
Dec 06 Javascript
js判断选择时间不能小于当前时间的示例代码
Sep 24 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
js实现获取当前时间是本月第几周的方法
Aug 11 Javascript
webpack中引用jquery的简单实现
Jun 08 Javascript
Node.js查找当前目录下文件夹实例代码
Mar 07 Javascript
Vue按需加载的具体实现
Dec 02 Javascript
js中getBoundingClientRect的作用及兼容方案详解
Feb 01 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
vue.js多页面开发环境搭建过程
Apr 24 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
python利用hook技术破解https的实例代码
2013/03/25 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
浅谈python数据类型及类型转换
2017/12/18 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
python版本单链表实现代码
2018/09/28 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
python 实现表情识别
2020/11/21 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技