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 ...
随机推荐
- PyQt5教程——菜单和工具栏(3)
PyQt5中的菜单和工具栏 在这部分的PyQt5教程中,我们将创建菜单和工具栏.菜单式位于菜单栏的一组命令操作.工具栏是应用窗体中由按钮和一些常规命令操作组成的组件. 主窗口 QMainWindow类 ...
- 线性表 顺序存储 链式存储 ---java实现
首先抽象出一个线性表抽象类(包括主要的增删操作) public abstract class MyAbstractList<E> { public abstract void add(E ...
- CSS nth-child、first-child、last-child、nth-of-type、first-of-type和last-of-type选择器使用
以下示例主要讲解nth-child.first-child.last-child.nth-of-type.first-of-type和last-of-type使用. 示例代码: <!DOCTYP ...
- No value for key [org.hibernate.impl.SessionFactoryImpl 异常解决
使用Hibernate+Spring进行CRUD操作时.出现例如以下类似异常信息: java.lang.IllegalStateException: No value for key [org.hib ...
- HDU 1023 Train Problem II 大数打表Catalan数
一个出栈有多少种顺序的问题.一般都知道是Catalan数了. 问题是这个Catalan数非常大,故此须要使用高精度计算. 并且打表会速度快非常多.打表公式要熟记: Catalan数公式 Cn=C(2n ...
- spyder python 相关
1.python开发集成工具Spyder中,如何设置变量成员提示和代码补全呢? 答: pip install rope,安装好rope 就可以了 2.最常用的是:tap的制动补全 (IPython c ...
- 云ci自动构建实例 最佳实践
- 1038. Recover the Smallest Number (30)
题目链接:http://www.patest.cn/contests/pat-a-practise/1038 题目: 1038. Recover the Smallest Number (30) 时间 ...
- 原创:【微信小程序】客服消息教程(后台以PHP示例)
1.不需要自己手动开发客服消息的,直接接入客服,不开启消息推送即可.这种模式不多讲. 2.公众号后台开启消息推送模式,配置服务器URL.TOKEN.随机串.数据模式.数据格式(XML或JSON),这个 ...
- Python 的 pandas 实践
Python 的 pandas 实践: # !/usr/bin/env python # encoding: utf-8 __author__ = 'Administrator' import pan ...