$.extend(x,y); 函数用法介绍。

时间:2023-03-10 01:06:59
$.extend(x,y); 函数用法介绍。

第一篇资料:  转自: https://www.cnblogs.com/yuqingfamily/p/5813650.html

语法:jQuery.extend( [deep ], target, object1 [, objectN ] )

$.extend(x,y); 函数用法介绍。描述: 将两个或更多对象的内容合并到第一个对象。

$.extend(x,y); 函数用法介绍。关于$.extend()的用法网上有很多文章,在这里指向写写对深浅拷贝的理解

深浅拷贝对应的参数就是[deep],是可选的,为true或false。默认情况是false(浅拷贝),并且false是不能够显示的写出来的。如果想写,只能写true(深拷贝)~~

什么是深、浅拷贝呢?先讲定义,再举例子

在默认情况下,通过$.extend()合并操作不是递归的(浅拷贝);如果第一个对象的属性本身是一个对象或数组,那么它将完全用第二个对象相同的key重写一个属性。这些值不会被合并。然而,如果将 true 作为该函数的第一个参数,那么会在对象上进行递归的合并(深拷贝)。

浅拷贝(false 默认):如果第二个参数对象有的属性第一个参数对象也有,那么不会进行相同参数内部的比较,直接将第一个对象的相同参数覆盖。

深拷贝(true):如果第二个参数对象有的属性第一个参数对象也有,还要继续在这个相同的参数向下一层找,比较相同参数的对象中是否还有不一样的属性,如果有,将其继承到第一个对象,如果没有,则覆盖。

$.extend(x,y); 函数用法介绍。栗子:

$.extend(x,y); 函数用法介绍。
var object1 = {
apple: 0,
banana: {
weight: 52,
price: 100
},
cherry: 97
};
var object2 = {
banana: {
price: 200
},
durian: 100
}; //默认情况浅拷贝
//object1--->{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}
//object2的banner覆盖了object1的banner,但是weight属性未被继承
//$.extend(object1, object2); //深拷贝
//object1--->{"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}
//object2的banner覆盖了object1的banner,但是weight属性也被继承了呦
$.extend(true,object1, object2); console.log('object1--->'+JSON.stringify(object1));
$.extend(x,y); 函数用法介绍。

仔细阅读上面这段代码,去运行看结果,你就会理解什么是深拷贝和浅拷贝了!

第二篇文章:  转自 : https://blog.****.net/wuhaotian1996/article/details/82747153

$.extend(setting,option)用于合并对象setting和对象option并将合并后的值返回给setting

常规用法(1)

  1. var settings = { validate: false, limit: 5, name: "foo" };
  2. var options = { validate: true, name: "bar" };
  3. jQuery.extend(settings, options);

运行结果settings == { validate: true, limit: 5, name: “bar” }

常规用法(2)
不改变setting类型

  var settings = { validate: false, limit: 5, name: "foo" };

  var options = { validate: true, name: "bar" };

  1. //设置一个空类
    var x=jQuery.extend({},settings, options);

结果 settings = { validate: false, limit: 5, name: “foo” };
x== { validate: true, limit: 5, name: “bar” }
好处:值被合并到这个空对象上,保护了默认值。

随机推荐

  1. Android多线程更新UI的方式

    Android下,对于耗时的操作要放到子线程中,要不然会残生ANR,本次我们就来学习一下Android多线程更新UI的方式. 首先我们来认识一下anr: anr:application not rep ...

  2. ie6不支持png图片的解决办法

    在head里引入png.js文件 <!--[if lte IE 6]> <script type="text/javascript" src="js/P ...

  3. TF-IDF(term frequency–inverse document frequency)

    TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度. 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降. TF- ...

  4. redis与spring整合·

    单机版: 配置spring配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"? ...

  5. [10.26_P2] 最短路 (单源最短路应用)

    单源最短路问题拓展 Description 给你一张图,图上有 n 个点,m 条边,要你找到两个点,使其最短路恰好包含给定的 k 个点.输出这条最短路的长度,输入保证有解. 输入格式 第一行两个数 n ...

  6. echo 到 stderr

    This question is old, but you could do this, which facilitates reading: >&2 echo "error& ...

  7. 洛谷 P1344 追查坏牛奶Pollutant Control —— 最小割

    题目:https://www.luogu.org/problemnew/show/P1344 就是求最小割: 但是还要边数最小,所以把边权都*1001+1,这样原来流量部分是*1001,最大流一样的不 ...

  8. Ordeby then by

    先按orderby排序,再按thenby排序 return PartialView("_ClickRangeOnCategory", articles.OrderByDescend ...

  9. 关于CentOS 7安装jdk1.8

    安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. ...

  10. 摘抄 - linux 目录结构简介

    /   根目录 |—–/bin   软连接,指向 /usr/bin.存储一些命令,一般为用户命令 |—-/boot  系统启动相关的文件;包括启动时内核的一些配置,grub配置等等:一般为之分配300 ...