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 建设银行登陆键盘
Jun 10 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
Jun 24 Javascript
JavaScript中的Math 使用介绍
Apr 21 Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
vue生成token并保存到本地存储中
Jul 17 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
Vue实现boradcast和dispatch的示例
Nov 13 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
基于mysql的论坛(1)
2006/10/09 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
php注册登录系统简化版
2020/12/28 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
详解angular2封装material2对话框组件
2017/03/03 Javascript
原生js二级联动效果
2017/06/20 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
简单介绍Python中的JSON模块
2015/04/08 Python
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
python如何变换环境
2020/07/21 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
公司业务主管岗位职责
2013/12/07 职场文书
思想专业自荐信范文
2013/12/25 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
企业投资意向书
2015/05/09 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书