jQuery.extend()中的布尔值的作用
jQuery.extend()中,第一个参数可以添加一个布尔值,表示是否深层拷贝,默认是false.但如果设置为true,则表示深层拷贝.
下面来看看什么是深层拷贝:
<script type="text/javascript">
//深层拷贝,第二个对象中的love属性,将会和第一个对象中的love属性合并,遇到相同的属性,后者覆盖前者
var resultTrue = $.extend(true,{},
{name:'jyh',job:'web-front-end',love:{bunny:'tewale',cat:'mimi'}},
{age:'18',love:{dog:'wangwang',cat:'mi'}
});
//得到的结果将love对象合并,cat:'mi'覆盖cat:'mimi'
console.log(resultTrue);
//浅拷贝,false不写也可以,默认就是false;
var resultFalse = $.extend(false,{},
{name:'jyh',job:'web-front-end',love:{bunny:'tewale',cat:'mimi'}},
{age:'18',love:{dog:'wangwang',cat:'mi'}
});
//得到的结果,第二个对象的love属性完全取代第一个对象的love属性
console.log(resultFalse);
</script>
得到的结果如下:

还有另外很重要的一点,浅拷贝时,假如a对象的属性值love是一个对象{...},拷贝到b对象以后,b对象的love属性值和a对象的love属性值,指向的是同一个{...}对象,如果修改a对象的love属性值{...},b对象的love属性值{...}也会随之变化,但如果是深拷贝,两者是完全独立的.互不影响.
补充深拷贝和浅拷贝的js原生代码:
Object.prototype.clone = function(ifDeep){
var oNew = this.constructor ===Array ? [] : {};
for(var i in this){
oNew[i] = ifDeep ? typeof this[i] === 'object' ? this[i].clone() : this[i] : this[i]
}
return oNew
};
var obj = {name:'code_bunny',love:{dog:'wangwang',cat:'miaomiao'}};
var objCopy1 = obj.clone(true);
var objCopy2 = obj.clone(false);
console.log(objCopy1);
console.log(objCopy2);
obj.love.dog = "wang";
console.log(objCopy1);
console.log(objCopy2);
可以看到, objCopy1是深拷贝,objCopy1是浅拷贝,所以,在修改obj.love.dog以后, objCopy1没有发生变化,而objCopy2的love属性的dog属性会被修改.
jQuery.extend()中的布尔值的作用的更多相关文章
- 3.Python自我修炼(升仙中....整数,布尔值,字符串,for循环)
python学习(整数,布尔值,字符串,for循环) 1.整数 在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.但是在python3中不存 ...
- 4、python中的布尔值和None
一.布尔值 1.布尔值只有两个:True.Flase,表示python语句的真与假: 2.在python早期的版本,布尔值用1和0表示. 二.None 1.None表示虚无,什么也没有: 2.千万不要 ...
- [C] C语言中的布尔值
C不具备显示的布尔类型,所以使用整数来代替,规则是:零是假,任何非零值皆为真. 反过来说,如果逻辑表达式为真其值一定为真,若逻辑表达式为假其值一定为零.
- jquery extend中
var $=123; <src="jquery.js"> //加载jquery.js的时候 里面有句 _$=window.$,保存123的 //no ...
- jquery ligerUI中ligerComboBox 初始值问题
ligerComboBox项目中运用总结内容如下: $("#selectId").ligerComboBox({ data: proData, initValue: 0});这就默 ...
- Dart编程布尔值
Dart为布尔数据类型提供内置支持.Dart中的布尔数据类型仅支持两个值true和false.关键字bool用于表示DART中的布尔值. 在dart中声明布尔变量的语法如下所示 bool var_na ...
- jQuery中jQuery.extend() 和 jQuery.fn.extend()的功能和区别
昨天下午和今天上午断断续续的一直在看jQuery中jQuery.extend() 和 jQuery.fn.extend()两个函数的功能及区别,现在自认为是掌握的差不多了.好记性不如烂笔头,这里一方面 ...
- js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...
- jquery,extjs中的extend用法小结
在jquery中,extend其实在做插件时还是用的比较多的,今天同时小结jquery和ext js中 的extend用法,先来看jquery中的. 1) extend(dest,src1,src2 ...
随机推荐
- 深入理解Object提供的阻塞和唤醒API
深入理解Object提供的阻塞和唤醒API 前提 前段时间花了大量时间去研读JUC中同步器AbstractQueuedSynchronizer的源码实现,再结合很久之前看过的一篇关于Object提供的 ...
- rarcrack
apt-get install rarcrack使用方法:rarcrack --threads xx --type rar xx.rar
- rxvt-unicode配置
我的urxvt配置文件如下 前缀可改为rxvt然后可以使用rxvt命令启动 -/.Xresources ! urxvt color set URxvt.multichar_encoding:utf-8 ...
- 【转】javascript中值传递,地址传递,引用传递的问题(使用js创建list对象时会用到)
function initEditModal_SI(node) { if (node.siArray == undefined) { node.siArray = new Object(); } va ...
- 【SPSS】软件介绍
SPSS软件是美国斯坦福大学三位学生1968年研制开发的统计软件,SPSS是Statistical Package for Social Science(社会科学软件统计包)的缩写,2000年SPSS ...
- Cocos2dx 学习记录 [2] 关于混合和高亮一些知识点的体会
网上有一篇博客讲的是高亮的http://www.cnblogs.com/mrblue/p/3455775.html 就是这篇,尽管代码简单,但对于刚開始学习的人的我,看的还是有些吃力的,毕竟有些内容不 ...
- SpringBoot启动
一.启动时加载数据,就用CommandLineRunner 只需要将类实现CommandLineRunner,并且加上Component注解,还可以通过Order来控制启动顺序. @Component ...
- AME_IExpense费用报表通过AME审批简单例子(案例)
2014-05-30 Created By BaoXinjian
- PS_Form个性化标准LOV的替换和数据源追溯分析(案例)
2014-06-01 BaoXinJian
- Linux vm运行参数 - overcommit相关的参数
一.前言 终于可以进入Linux kernel内存管理的世界了,但是从哪里入手是一个问题,当面对一个复杂系统的时候,有时候不知道怎么开始.遵守“一切以人为本”的原则,我最终选择先从从userspace ...