原文:$.extend(true,{},a,b)解析

版权声明: https://blog.csdn.net/bsfz_2018/article/details/81738437

什么是$.extend

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。
$.extend(true,{},a,b)
true:是否深度拷贝,不加为false,浅拷贝,加了深拷贝
{}:将合并结果保存到新对象,这样原对象将不会发生改变
a:第一个合并的对象
b:第二个合并的对象

浅拷贝

var defaults = {name:"张三",age:18,sex:"true",scores:{chinese:70,science:100}};
var options = {name:"李四",age:20,scores:{chinese:98,math:99,english:100}};
var settings = $.extend(defaults,options);
console.log(defaults);
console.log(options);
console.log(settings);

结果:

可以发现原对象发生改变,规则:a对象和b对象相同的部分,b覆盖a,不同的部分,a保留,b追加到a中

深拷贝

var defaults = {name:"张三",age:18,sex:"true",scores:{chinese:70,science:100}};
var options = {name:"李四",age:20,scores:{chinese:98,math:99,english:100}};
var settings = $.extend(true,defaults,options);
console.log(defaults);
console.log(options);
console.log(settings);


结果可以发现b不是像浅拷贝一样属性中的对象分数完全被覆盖,而是分数对象中的属性b覆盖a中相同的,b不同的追加,a中的保留

保存到新对象,不改变a对象的值

var defaults = {name:"张三",age:18,sex:"true",scores:{chinese:70,science:100}};
var options = {name:"李四",age:20,scores:{chinese:98,math:99,english:100}};
var settings = $.extend(true,{},defaults,options);
console.log(defaults);
console.log(options);
console.log(settings);


可以看出a对象没有发生改变,不同于上面第二个例子,即单纯的深度拷贝。这个例子的结果即使新对象{}被填充数据的结果

最新文章

  1. imopen和bwmorph_MATLAB图像处理中的应用
  2. pandas使用pct_change函数计算数据列的百分比变化:计算当前元素和前一个元素之间的百分比变化(包含NaN值的情况以及数据填充方法)
  3. LibManagementSys图书管理系统
  4. SAP CRM configuration product在UI上的显示逻辑
  5. 使用ADF BC管理保存点
  6. tmux 上滚_实践中的tmux:回滚缓冲区
  7. android cm 老罗,Android之父打造了一款全面屏旗舰 罗永浩如此评价
  8. Docker系列(六)镜像与仓库
  9. 问个globle的问题,如何定时更新论坛的数据啊?
  10. 【USB设备设计】--复合设备,双HID高速(64Byte 和 1024Byte)
  11. java里什么是索引_面试官:什么是索引?
  12. Nielsen:网络广告信任度上升
  13. 苹果7pnfc功能门禁卡_苹果7手机nfc怎么开启 苹果手机门禁卡nfc功能
  14. 期货市场监控后台管理系统
  15. 谢烟客---------Linux之权限
  16. Python处理unicode字符
  17. Asible简介及部署
  18. Linux系统-【磁盘管理】lsblk命令 – 查看系统的磁盘使用情况
  19. New Concept English Two 3
  20. Esri发布新的2050年全球土地覆盖预测地图

热门文章

  1. javascript-复制
  2. MFC获取文件夹路径并得到该字符串
  3. windows--bat--%0无限执行当前bat脚本
  4. windows程序窗体创建流程模型A--利用基本数据类型
  5. C++_类和对象_C++继承_多继承语法---C++语言工作笔记067
  6. Elasticsearch--进阶-term_keyword查询---全文检索引擎ElasticSearch工作笔记015
  7. k8s核心技术-Ingress(对外暴露应用实施)---K8S_Google工作笔记0042
  8. ASP.Net学习笔记002--ASP.Net服务端控件做了什么2
  9. matlab | 与 || 的区别
  10. 杭电3068 最长回文 最长回文的manacher算法