工作中常见$.extend( ),所以就查了一些它的用法。

一、Jquery的扩展方法原型是:

extend(dest, src1, src2, src3...)

  它的含义是将src1,src2,src3...合并到dest中,返回值为合并后的dest,由此可以看出该方法合并后,是修改了dest的结构的。如果想要得到合并的结果却又不想修改dest的结构,可以如下使用:

var newSrc = $.extend({}, src1, src2, src3...) //也就是将"{}"作为dest参数

  这样就可以将src1, src2, src3...进行合并,然后将结果返回给newSrc。如:

var result = $.extend({}, {name: "Tom", age: 21}, {name: "Jerry", sex: "Boy"})

  合并后的结果:

result = {name: "Jerry", age: 21, sex: "Boy"}

  也就是说,如果后面的参数和前面的参数相同会覆盖。

二、省略dest参数

  上述extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将src合并到调用extend方法的对象中去,如:

1. $.extend(src)

  该方法就是将src合并到jquery的全局对象中去,如:

$.extend({hello: function(){alert('hello');}})

  上述代码表示将hello方法合并到jquery的全局对象中。

2.$.fn.extend(src)

  该方法将src合并到jquery的实例对象中去,如:

$.fn.extend({
hello: function(){alert('hello');}
});

  就是将hello方法合并到jquery的实例对象中。

3.常用扩展实例

● 在jquery全局对象中扩展一个net命名空间:

$.extend({net: {}});

● 将hello方法扩展到之前扩展的jquery的net命名空间中去。

$.extend($.net , {
hello: function(){alert('hello');}
})

三、jquery的extend方法还有一个重载原型

extend(boolean , dest , src1 , src2 , src3...)

  第一个参数boolean代表是否进行深度拷贝,其余参数和前面介绍的一致,什么叫深拷贝,我们看一个例子:

var result = $.extend(true , {},
{ name: "John", location: { city: "Boston", county: "USA"}},
{ last: "Resig", location: { state: "MA", county: "China"}});

  我们可以看出src1中嵌套子对象location: {city: "Boston"}, src2中也嵌套子对象location:{state: "MA"},第一个深度拷贝参数为true,那么合并后的结果就是:

result = {name: "John", last: "Resig",
location: {city: "Boston", state: "MA", county: "China"}}

  也就是说它会将src中的嵌套子对象进行合并,而如果第一个参数boolean为false:

var result = $.extend(false, {},
{ name: "John", location: { city: "Boston", county: "USA"}},
{ last: "Resig", location: { state: "MA", county: "China"}})

  那么合并后的结果是:

result = { name: "John", last: "Resig", location: { state: "MA", county: "China"}}

  以上就是$.extend()在项目中经常会使用到的一些细节。

开发中常用的 $.extend 总结的更多相关文章

  1. .net开发中常用的第三方组件

    .net开发中常用的第三方组件 2013-05-09 09:33:32|  分类: dotnet |举报 |字号 订阅     下载LOFTER 我的照片书  |   RSS.NET.dll RSS. ...

  2. 依赖注入及AOP简述(十)——Web开发中常用Scope简介 .

    1.2.    Web开发中常用Scope简介 这里主要介绍基于Servlet的Web开发中常用的Scope. l        第一个比较常用的就是Application级Scope,通常我们会将一 ...

  3. spring注解开发中常用注解以及简单配置

    一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...

  4. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  5. 2019-2-20C#开发中常用加密解密方法解析

    C#开发中常用加密解密方法解析 一.MD5加密算法 我想这是大家都常听过的算法,可能也用的比较多.那么什么是MD5算法呢?MD5全称是 message-digest algorithm 5[|ˈmes ...

  6. 开发中常用的es6知识

    结合实际开发,开发中常用的es6的知识: 1.新增let和const命令: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效: cons ...

  7. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  8. iOS开发中常用的数学函数

    iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...

  9. Struts2页面开发中常用标签使用说明

    1. Struts2页面开发中常用标签使用说明 1.1.往action里传值的使用方式: <input name="userName" type="text&quo ...

随机推荐

  1. CSS选择器从右向左的匹配规则

    CSS选择器从右向左的匹配规则 下面这个栗子,CSS选择器它是如何工作的? .mod-nav h3 span {font-size: 16px;} 如果不知道匹配规则,可能的理解是从左向右匹配:先找到 ...

  2. DDD社区官网

    DDD社区官网上一篇关于聚合设计的几个原则的简单讨论: 聚合是用来封装真正的不变性,而不是简单的将对象组合在一起 聚合应尽量设计的小 聚合之间通过ID关联 聚合内强一致性,聚合之间最终一致性 从聚合和 ...

  3. hibernate查询出的数据和数据库不一致

    之前直接使用hibernate的时候就出现过已经进行物理存储后的数据,查询不出来的情况,既然是已经存储后的数据,说明事务已经提交,想必问题出在查询时,查询的缓存,没有查询数据库.时有时无就很奇怪. 现 ...

  4. 博客已迁移到lizhug.com

    新的博客地址 http://lizhug.com

  5. JavaEE:Eclipse开发工具的相关使用和XML技术

    Eclipse开发工具的知识点1.工程的属性(properties)1)Text file encoding  工程编码(在导入其他工程时,注意编码类型一致)2)Java build path设置cl ...

  6. Android自定义组合控件内子控件无法显示问题

    今天自定义了一个组合控件,与到了个奇葩问题: 我自定义了一个RelativeLayout,这个layout内有多个子控件.但奇怪的是这些子控件一直显示不出来.调试了一下午,竟然是因为在获取(infla ...

  7. var, object, dynamic的区别以及dynamic的使用

    var, object, dynamic的区别以及dynamic的使用 理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用 2013-06- ...

  8. 从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态

    一.文件流 ofstream,由ostream派生而来,用于写文件 ifstream,由istream派生而来, 用于读文件 fstream,由iostream派生而来,用于读写文件 二.打开文件 说 ...

  9. Servlet的ClassLoader

    摘自深入java web技术内幕修订版

  10. 手机无须ROOT不用修改hosts即可在本地测试安卓、苹果APP和H5应用

    开发手机APP和 H5 应用经常需要在本地和线上环境分开测试,一般想到的操作都是修改hosts,我也一直这么干的,但手机上修改hosts是需要 ROOT权限的,这样太过麻烦,还有变砖头的风险,而且有些 ...