jquery構(gòu)造函數(shù)分析

  jquery是面向?qū)ο蟮膶懛ㄒ灿袠?gòu)造函數(shù),每次調(diào)用jquery方法是就會(huì)實(shí)例化一個(gè)jqeury對象,但是jQuery的寫法卻非常高明值得我們學(xué)習(xí)。

創(chuàng)新互聯(lián)公司服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過10年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

  js雖然不是面向?qū)ο蟮恼Z言,卻又很多面向?qū)ο蟮膶懛?,這里推薦大家看一下圖靈的《javascript高級(jí)程序設(shè)計(jì)》中的面向?qū)ο蟮某绦蛟O(shè)計(jì)部分。在眾多方法中比較常見的寫法是構(gòu)造加原型方式,下面舉例:

var Person=function(name,age){
   this.name=name;
   this.age=age;
}
Person.prototype={
  constructor:Person,
  init:function(msg){
    this.say(msg);
  },
  say:function(msg){
  alert(this.name+'說'+msg);
  }
};
var tom=new Person('tom',23); 
tom.init('你好');// tom說你好

那再來看看jQuery的構(gòu)造函數(shù)吧

// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},

可以看到在jQuery真正的函數(shù)是init方法,當(dāng)我們調(diào)用jquery時(shí)會(huì)new init() 而不是 new jQuery() .

jQuery.fn是啥呢,在后面我們會(huì)看到這樣一句代碼
jQuery.fn = jQuery.prototype = {...

這樣就很好理解了,其實(shí)jQuery.fn就是原型對象也就是說在jQuery原型里面有一個(gè)init方法,這個(gè)方法是真正的構(gòu)造函數(shù)。這樣寫的好處就是不需要在寫$().init()這樣的操作,直接就初始化了,但是還有一個(gè)問題就是既然init才是構(gòu)造函數(shù)那我們寫在jQuery上面的那么方法實(shí)例不是不能調(diào)用嗎?init的實(shí)例化自然只能調(diào)用init的方法啦,往后看到這樣一句代碼

// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;

之前講過jQuery.fn=jQuery.protype,這就意味著jQuery的原型對象賦給了init的原型,這樣jQuery的原型方法自然init也就都有了,通過這樣構(gòu)造方式S使得使用jQuery方法非常簡單既不需要new jQuery()的操作也不需要手動(dòng)初始化就行調(diào)用普通函數(shù)一樣簡單。

文章題目:jquery構(gòu)造函數(shù)分析
鏈接分享:http://bm7419.com/article4/pcgdoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、面包屑導(dǎo)航、微信小程序、App設(shè)計(jì)網(wǎng)站策劃、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化