jQuery.extend 函数详解

JQuery的extend扩展方法:
      Jquery的扩展方法extend是咱们在写插件的过程当中经常使用的方法,该方法有一些重载原型,在此,咱们一块儿去了解了解。
      1、Jquery的扩展方法原型是:   javascript

 

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


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

 

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


      这样就能够将src1,src2,src3...进行合并,而后将合并结果返回给newSrc了。以下例:web

 

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

 

      那么合并后的结果.net

 

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


      也就是说后面的参数若是和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值。code

      2、省略dest参数
      上述的extend方法原型中的dest参数是能够省略的,若是省略了,则该方法就只能有一个src参数,并且是将该src合并到调用extend方法的对象中去,如:
   一、$.extend(src)
   该方法就是将src合并到jquery的全局对象中去,如:htm

 

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


   就是将hello方法合并到jquery的全局对象中。
   二、$.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命名空间中去。

   3、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)

相关文章
相关标签/搜索