工作中常见$.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. lnmp1.0 升级php.5.4.28 后出错 Nginx 502 Bad Gateway

    碰到一个很奇怪的问题,用lnmp自带的./upgrade_php.sh升级 php5.4.27正常.但升级到php5.4.28就出错,访问p.php 提示:Nginx 502 Bad Gateway. ...

  2. geek 的博客

    hexo 适合前端 geek 的博客   原文出自:http://www.qiangji.tk/hexo%E9%80%82%E5%90%88%E5%89%8D%E7%AB%AFgeek%E7%9A%8 ...

  3. “git push”后返回“Error 403”解决方法

    问题描述: 1,mac ox系统,terminal上运行命令git push出现403错误: 2,代码是在别人的github(暂且叫origin branch吧)上克隆的,修改和添加了部分代码后欲提交 ...

  4. windows 服务器系统日志分析及安全

    一.利用Windows自带的防火墙日志检测入侵 下面是一条防火墙日志记录 2005-01-1300:35:04OPENTCP61.145.129.13364.233.189.104495980 200 ...

  5. easyuidatagrid扩展--玩一下,无实际意义

    直接上代码 $.extend($.fn.datagrid.defaults.editors, { operater: { init: function (container, options) { v ...

  6. C#山寨版本拨号客户端

    C#山寨版本[天翼拨号客户端]---内含详细抓包,模拟数据---万事俱备,只欠东风.   本帖子本来最初是发在CSDN上的,回复的也有十几个,但没有一个有技术含量的回复....特来此讨论,请教,请各位 ...

  7. Android: Type Method 'NewStringUTF' could not be resolved

      编译一个最简单的Android NDK 例子(android-ndk-r8/samples/hello-jni)出现了错误信息:Type Method 'NewStringUTF' could n ...

  8. 深入浅出 ThreadLocal(一)

    本文参考http://lavasoft.blog.51cto.com/62575/51926/,对其中的程序进行了改写 一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线 ...

  9. VC++实现小托盘的处理

    // 实验一Dlg.cpp : implementation file // #include "stdafx.h" #include "实验一.h" #inc ...

  10. Liferay的架构:缓存(第一部分)

    这次,我将要涉及到一个非常重要的概念:缓存.在当今的web应用中,如果没有设计一个比较好的缓存系统,在web中就不可能有一个良好的性能.所以我将要 提到的缓存不仅仅能够更好地理解Liferay架构,而 ...