当前位置: 首页 > news >正文

jQuery.extend 函数详解

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

JQuery的extend扩展方法:
      Jquery的扩展方法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的实例对象中。

   下面例举几个常用的扩展实例:

 

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

 

   这是在jquery全局对象中扩展一个net命名空间。

 

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


    这是将hello方法扩展到之前扩展的Jquery的net命名空间中去。

   三、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()在项目中经常会使用到的一些细节。

分类: JQuery

好文要顶 关注我 收藏该文  

RascallySnake
关注 - 1
粉丝 - 180

+加关注

159

0

(请您对文章做出评价)

« 上一篇:Jquery的$命名冲突:
» 下一篇:SQl Server存储过程基础

posted on 2010-05-07 11:45 RascallySnake 阅读(278337) 评论(73) 编辑 收藏

< Prev12


评论:#51楼 2015-03-18 10:10 | jiangyg  

好东西,谢谢分享,终于搞明白了!

支持(2)反对(0)

  #52楼 2015-04-02 22:40 | bugong  

mark

支持(1)反对(0)

  #53楼 2015-06-25 11:19 | 孙永  

谢谢分享,楼主好人!

支持(0)反对(0)

  #54楼 2015-07-09 15:13 | 山水中华  

解决了很多疑问,谢谢分享,楼主好人。

支持(0)反对(0)

  #55楼 2015-08-07 17:22 | xiaoliang10000  

谢谢分享,明白啦。

支持(0)反对(0)

  #56楼 2015-08-12 23:11 | manfredHu  

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

支持(0)反对(0)

  #57楼 2015-08-27 22:10 | dahongdahong  

谢谢,写的挺详细的

支持(0)反对(0)

  #58楼 2015-08-30 09:31 | RY一步一个脚印  

good

支持(0)反对(0)

  #59楼 2015-08-31 10:48 | helenfong  

写的不错

支持(0)反对(0)

  #60楼 2015-09-29 09:35 | 流年WT  

之前看别人的js一直不懂这个是什么意思,现在懂了,谢谢楼主

支持(0)反对(0)

  #61楼 2015-10-20 10:42 | 阿山哥哥  

很清晰,容易理解

支持(0)反对(0)

  #62楼 2015-11-11 10:31 | 浩宇渺星  

不错,谢谢楼主

支持(0)反对(0)

  #63楼 2015-12-07 18:08 | 阿林十一  

懂了!谢谢楼主!

支持(0)反对(0)

  #64楼 2015-12-13 17:47 | missjavascript  

终于懂了。。。。之前一直不知道为什么这么写,现在终于懂了。。。。搜噶、、、感谢博主

支持(0)反对(0)

  #65楼 2016-03-16 15:14 | 我是车子啊  

mark

支持(0)反对(0)

  #66楼 2016-03-17 14:27 | ^_^.999  

@. @ 哇、终于知道$.extend的用法了 谢谢楼主

支持(0)反对(0)

  #67楼 2016-03-20 01:04 | gyx13  

感谢!

支持(0)反对(0)

  #68楼 2016-04-15 14:43 | 玉菲莎  

棒棒棒,讲得很清楚~

支持(0)反对(0)

  #69楼 2016-04-19 09:21 | 俊临天下  

茅塞顿开!!

支持(0)反对(0)

  #70楼 2016-04-19 15:38 | ppan  

通俗易懂,并没有长篇大论,楼主很厉害。

支持(0)反对(0)

  #71楼 2016-04-28 13:44 | 于为源  

很好

支持(0)反对(0)

  #72楼 2016-05-11 16:41 | Jack、Chen  

受教了。

支持(0)反对(0)

  #73楼 2016-05-18 17:02 | cz_cyc  

又学到一点知识

支持(0)反对(0)

  

转载于:https://my.oschina.net/u/2294923/blog/681405

相关文章:

  • Shiro安全框架入门篇(登录验证实例详解与源码)
  • goldengate一些参数整理
  • HDU1161 Eddy's mistakes
  • Unity3d标签管理类-利用脚本控制标签,提升工作效率
  • putty如何设置密钥登陆
  • 程序员该如何有效的找工作?
  • Android 认识Activity 生命周期
  • C#基础内容学习笔记(一)
  • Open CV缩放图像
  • 程序员之路:以Android证道
  • 地域划分
  • Unable to parse the default media type registry
  • (原)Matlab的svmtrain和svmclassify
  • Fastclick 导致click事件触发两次的问题,fastclickclick
  • 用spring-data-redis实现类似twitter的网站(转)
  • @jsonView过滤属性
  • Android单元测试 - 几个重要问题
  • CSS中外联样式表代表的含义
  • EOS是什么
  • Git 使用集
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript设计模式与开发实践系列之策略模式
  • java取消线程实例
  • jquery cookie
  • Leetcode 27 Remove Element
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • pdf文件如何在线转换为jpg图片
  • Python中eval与exec的使用及区别
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 让你的分享飞起来——极光推出社会化分享组件
  • 思维导图—你不知道的JavaScript中卷
  • 算法系列——算法入门之递归分而治之思想的实现
  • 我这样减少了26.5M Java内存!
  • 想写好前端,先练好内功
  • 项目实战-Api的解决方案
  • 学习笔记TF060:图像语音结合,看图说话
  • puppet连载22:define用法
  • UI设计初学者应该如何入门?
  • 组复制官方翻译九、Group Replication Technical Details
  • ​插件化DPI在商用WIFI中的价值
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #include<初见C语言之指针(5)>
  • (06)Hive——正则表达式
  • (8)STL算法之替换
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (转)可以带来幸福的一本书
  • (转载)Linux 多线程条件变量同步
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...