什么叫jQuery的核心對象?
$ $===jQuery
什么叫jQuery的原型對象?
$.fn $.fn===$.prototype
什么叫靜態方法?
在構造函樹上定義的方法,靜態方法通過構造函數去調用。例如:Math.random()
什么叫動態方法?
動態方法也叫實例方法,在原型對象上添加的方法叫動態方法,通過實例對象去調用。例如:arr.slice()
jQuery的靜態方法和動態方法?
給jQuery擴展插件的時候,有兩種方式,一種是$.extend()的方式,一種是$.fn的方式,$.extend()擴展的是靜態方法,$.fn擴展的是動態方法。
jQuery的靜態方法用核心對象去調用,也就是用$去調用,jQuery的動態方法用原型對象去調用,也就是用$.fn去調用。
現在給jQuery擴展一個獲取隨機色的方法:
(function($){
$.extend({
randomColor:function(){
var col="rgba(";
for(var i=0;i<3;i++){
col+=Math.floor(Math.random()*256)+",";
}
col+=Math.random().toFixed(2)+")";
return col;
}
});
})($);
這就是擴展了一個靜態方法,使用時用$去調用。比如給div設置隨機色,$("div").css("backgroundColor",$.randomColor);
現在給jQuery擴展一個獲取/設置背景色的方法:
(function($){
$.fn.bgc=function(color){
if(!color) return this.css("backgroundColor");
this.css("backgroundColor",color);
return this;
}
})($);
這就是擴展了一個動態方法,使用時用jQ對象去調用。比如設置div的背景色,$("div").bgc("red");這就是$.fn的方式,bgc()就是這個fn函數。
也就是說,使用$.extend()是給jQuery添加了靜態方法,使用時用$調用,使用$.fn是給JQuery添加了動態方法,使用時用$.fn調用。
$叫核心對象,$.fn叫原型對象。
typeof $--------->function
typeof $.fn--------->object
$相當於類,由類直接調用方法,$.fn相當於實例對象,實例對象去調用方法。