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)

相關文章
相關標籤/搜索