在開始重構之前,需要先學習一下$.extend()方法,之前雖然見過它,但并不了解它,為了加深彼此的了解,是以先對它進行初步的學習,并在以後的項目中,經常的去使用它,達到彼此熟悉。
extend的意思就是擴充,$.extend()就是jquery的擴充方法。
$.extend()方法原型
含義:将src1,src2,src3...合并到dest中,傳回值為合并後的des,由此可以看出該方法合并後,是修改了des的結構的。如果想要得到合并的結果卻又不想修改dest的結構,可以如下使用:
這樣就可以将src1,src2,src3...進行合并,然後将合并結果傳回給newsrc了。如下例:
結果:

也就是說後面的參數如果和前面的參數存在相同的名稱,那麼後面的會覆寫前面的參數值,如果為後面的對象添加一個age屬性并設定為11,則結果如下:
結果
省略dest參數
上述的extend方法原型中的dest參數是可以省略的,如果省略了,則該方法就隻能有一個src參數,而且是将該src合并到調用extend方法的對象中去,如:
就是将hello方法合并到jquery的全局對象中。
$.fn.extend(src)
該方法将src合并到jquery的執行個體對象中去,如:
單擊按鈕,調用擴充方法hello。
頁面加載,調用按鈕jquery對象執行個體的hello方法。
幾個例子
結果為彈出“net.hello”
jquery.extend()另外一個原型
第一個參數boolean代表是否進行深度拷貝,其餘參數和前面介紹的一緻,什麼叫深層拷貝,我們看一個例子:
我們可以看出src1中嵌套子對象location:{city:"boston"},src2中也嵌套子對象location:{state:"ma"},第一個深度拷貝參數為true,那麼合并後的結果就是:
也就是說它會将src中的嵌套子對象也進行合并,而如果第一個參數boolean為false,我們看看合并的結果是什麼,如下:
學習了上面的extend方法,那麼下面就對上篇文章中的圖檔走馬展示的js進行重寫。
代碼如下:
每天逛部落格園已經是一種習慣,的确收獲不少,看到了然後就動手實踐,也就有了這篇js重構的文章,雖然看起來仍有點亂,但是通過這次重構,讓我對jquery的擴充方法的用法有了一個深入的學習。但如果将這個功能插件化,還得進一步深入學習,然後再次重構,通過這次重構,收獲還是有的,我會在以後的項目中更多的采用面向對象的方式去寫js或者jquery,也會将extend方法使用起來。
部落格位址:
<a href="http://www.cnblogs.com/wolf-sun">http://www.cnblogs.com/wolf-sun/</a>
部落格版權:
本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接配接。
如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起讨論,共同進步!
再次感謝您耐心的讀完本篇文章。
轉載:http://www.cnblogs.com/wolf-sun/p/4052480.html