jQuery.extend與jQuery.fn.extend的區別

  最近在看jquery組件的開發,關於extend與fn.extend之間的區別有些不理解,後來詳細的看了一下,作下記錄:jquery

一、靜態方法與實例方法spa

  首先先了解靜態方法與實例方法這兩個的區別:  prototype

    一、靜態方法是指不須要聲明類的實例就能夠使用的方法。code

    二、實例方法是指必需要先使用"new"關鍵字聲明一個類的實例, 而後才能夠經過此實例訪問的方法。對象

function staticClass() { }; //聲明一個類blog

staticClass.staticMethod = function() { alert("static method") }; //建立一個靜態方法
staticClass.prototype.instanceMethod = function() { "instance method" }; //建立一個實例方法
開發

 

上面首先聲明瞭一個類staticClass, 接着爲其添加了一個靜態方法staticMethod 和一個動態方法instanceMethod。區別就在於添加動態方法要使用prototype原型屬性。原型

 

對於靜態方法能夠直接調用   staticClass.staticMethod();
可是動態方法不能直接調用   staticClass.instanceMethod(); //語句錯誤, 沒法運行。io

 
須要首先實例化後才能調用   var instance = new staticClass(); //首先實例化function

instance.instanceMethod(); //在實例上能夠調用實例方法

二、extend與fn.extend

  簡單的來講,extend就是爲jquery對象添加了一個靜態方法,fn.jquery則添加了一個實例方法

  $.extend({sayName:function(){}})

  調用作個靜態方法,只須要$.sayName()便可

  $.fn.extend({sayName:function(){}})

  或者$.fn.sayName=function(){};

  這種方法至關於爲jquey對象的原型添加方法,必需要實例化才能夠調用,$("div").sayName();

  

  此外,extend方法還可用於組件開發中,默認參數的替換  

function fn(option){
   var option = jQuery.extend({
         name1:value1;
         name2:value2;     
},options); 
} 

這樣,沒有參數傳遞時,會採用默認值,有參數時,會採用傳遞的值

相關文章
相關標籤/搜索