js对象的复制,传递,新增,删除和比较
当我们把一个某个对象拷贝或者传递给某个函数时,往往传递的是该对象的引用。
因此我们在引用上做的任何改动,都将会影响到它所引用的原对象。
复制,拷贝
var o = { add: 'Changdao'};
var oBox = o;
oBox.add;//Changdao;
oBox.add='Lijiang';
o.add;//Lijiang;
传递
var o = { add: 'Changdao'};
var xinObj = function(key) { key.add = 'Xichang' };
xinObj(o) ;
o.add;//Xichang;
新增,删除
var o = { add: 'Changdao'};
o.father='TomG';
o.morther= 'HanMM';
delete o.add;
o.add;//undefined;
比较
当且仅当,两个对象指向同一个对象引用时,返回true;
即使碰巧两个对象拥有相同的属性和值也不行;
var objA = { address:'Panpei'},objB ={address:'Panpei'};
objA===objB;//false;
var oBox = objA;
oBox= objA;//true
oBox.address="Kongdali";
objA.address;//Kongdali;
错误的定义方式var oBox = objB && objA; 如果对象是如此定义的话,虽然可能不报错,但如果两个对象都存在的情况下,一般得到的值为第二个的,所以这样写没有意义,容易出bug
js对象的复制,传递,新增,删除和比较的更多相关文章
- js 对象深复制,创建对象和继承
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...
- 关于js对象值的传递
结合红宝书和网上的一些文章,记录下自己对关于js对象的值的传递的一些理解. js对象是保存在堆内存中的,当把对象赋值给变量时,是把对象在堆内存的引用(地址)赋值给了变量,变量通过地址来访问对象.下面来 ...
- js 对象的值传递
一.变量赋值的不同 1.原始值 在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的. 2.引用值: 在将一个保存着对象内存地址的变量复制给另一个变量 ...
- JS 对象API之修改、删除对象的属性
无论是修改还是删除对象的属性,我们首先要清楚:自有属性.共有属性的处理方法肯定是不同的: 先创建一个对象实例 var obj = { name: '小马扎', age: }; Object.proto ...
- js 对象属性复制到另一个对象
var obj={a:1,b:2,c:3} var newObj={};for(var i in obj){newObj[i]=obj[i];}console.log(newObj);
- js 对象数组根据某个名称删除数组中的对象
delArrayItem: function (array,item) { const index = array.findIndex(text => text.name === item.na ...
- js对象进行浅复制,深拷贝的方法
js对象浅拷贝和深拷贝详解 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ...
- C#在WinForm中使用WebKit传递js对象实现与网页交互的方法
这篇文章主要介绍了C#在WinForm中使用WebKit传递js对象实现与网页交互的方法,涉及针对WebBroswer控件及WebKit控件的相关使用技巧,需要的朋友可以参考下 本文实例讲述了C#在W ...
- js对象/数组深度复制
今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...
随机推荐
- unity3d shader之God Ray上帝之光
又是一个post-process后期效果,god ray 上帝之光,说起上帝之光就是咱们再看太阳时太阳周围一圈的针状光芒先放组效果,本文的场景资源均来自浅墨大神,效果为本文shader效果 加入了前篇 ...
- mipi 调试经验
转载自http://blog.csdn.net/g_salamander/article/details/9163455 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议 ...
- HBase 简介(强烈推荐看)
本博文的主要内容有: .HBase定义 .HBase 的特点 .HBase 访问接口 .HBase 存储结构 .HBase设计 .HBase安装 .HBase shell操作 .输入 help 可 ...
- 一键清除cvs/svn 目录
步骤一.编写注册表脚本 新建一个文本文件,把下面的代码COPY进去,保存为delSVNorCVS.reg(可直接从本文附件中下载) Windows Registry Editor Versi ...
- crontab使用--linux下的定时任务程序
crontab是一个linux下的定时运行程序,如果我们想让自己的程序定时执行, 可以把自己的程序交给这个程序来完成 第一步:配置crontab的脚本的默认编辑器,它的默认的编辑器不好用,我们配置vi ...
- 使用Velocity 模板引擎快速生成代码
Velocity 模板引擎介绍 在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中.特别是在如今特别流行的MVC架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加高. ...
- 使用JUnit测试java代码
Junit 单元测试实验报告 一.实验环境 MyEclipse2014.Junit4.10 二.实验目的 学会单元测试,在MyEclipse中进行Junit测试 三.实验步骤 1.写出要测试的类 代 ...
- SpringMVC DispatcherServlet 说明与web配置
使用Spring MVC,配置DispatcherServlet是第一步. DispatcherServlet是一个Servlet,所以能够配置多个DispatcherServlet. Dispatc ...
- 基于xmpp openfire smack开发之smack类库介绍和使用[2]
http://blog.csdn.net/shimiso/article/details/8816540 关于Smack编程库,前面我们提到,它是面向Java端的api,主要在PC上使用,利用它我们可 ...
- js控件位置
function ShowSettingDiv() { var div = document.getElementById('ShowDiv'); //将要弹出的层 div.style.display ...