jQuery的extend方法


jq中的extend在面試中經常會被問道,今天我總結一個下有關於extend的用法三種進行對比,可能不全,希望大家指點,

用法一: $.extend({})  ,為jQuery類添加方法,可以理解為擴展靜態方法

    

用法二:$.fn.extend({})  插件,對jQuery.prototype進行擴展,提到插件那么就得說一下另一種方法$.fn.method = function(){}

    1. $.fn.method = function(){} 可以定義一個方法

    

    2 . $.fn.extend({}) 定義多個方法。

      需要實例化:$().toChange(),那么它的原型方法才能使用

    

  $.extend({})-- 靜態方法$.fn.extend({})--實例方法的區別 ,$是jQuery的簡寫

    1:jQuery.extend() 的調用並不會把方法擴展到對象的實例上,引用它的方法也需要通過jQuery類來實現

    2:jQuery.fn.extend()的調用把方法擴展到了對象的prototype上,所以實例化一個jQuery對象的時候,它就具有了這些方法、

  3:jQuery.fn.extend = jQuery.prototype.extend

      

用法三:繼承。淺拷貝與深拷貝 

  1 . 淺拷貝 $.extend(a,b) a使用b的屬性

         

  2 . 深拷貝 $.extend(true,a,b) a使用b的屬性

     

  3 . 不管后面有多少個對象,都將成為第一個對象的屬性

   

 

$.fn 是什么,下圖表示即 原型

           

 $.fn是指jquery的命名空間,加早fn上的方法及屬性,會對jquery實例每一個有效。

 如擴展$.fn.fn1= funtion(){},即$.fn.fn1()是對jquery擴展了一個abc方法,所以的jq實例都可以用$('div').fn1()

 這種方式的擴只能擴展一個方法,如果使用對象的形式擴展多個方法,則會導致報錯,原因是覆蓋了原始內部的代碼

         

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM