如何實(shí)現(xiàn)一個(gè)jQuery的api

什么是jQuery


jQuery 是一套高效、精簡并且功能豐富的跨瀏覽器的 JavaScript 工具庫,簡化HTML與JavaScript之間的操作。由約翰·雷西格(John Resig)在2006年1月的BarCamp NYC上發(fā)布第一個(gè)版本。當(dāng)前是由Dave Methvin領(lǐng)導(dǎo)的開發(fā)團(tuán)隊(duì)進(jìn)行開發(fā)。全球前10000個(gè)訪問最高的網(wǎng)站中,有65%使用了jQuery,是當(dāng)前最受歡迎的JavaScript庫。

實(shí)現(xiàn)jQuery的api

實(shí)現(xiàn)jQuery的api說起來也很簡單,就是對DOM進(jìn)行封裝。話不多說,直接看代碼:

window.jQuery = function(nodeOrSelector){
  let nodes = {}                                              //聲明一個(gè)偽數(shù)組
  if(typeof nodeOrSelector === 'string'){                    //判斷是否為選擇器
    let temp = document.querySelectorAll(nodeOrSelector)
    for(let i= 0; i < temp.length; i++){
      nodes[i] = temp[i]
    }
    nodes.length = temp.length
  }else if(nodeOrSelector instanceof Node){             //判斷是否為節(jié)點(diǎn)
    nodes = {                                                    
      0: nodeOrSelector,
      length: 1
    }
  }

  nodes.addClass = function(classes){              //給節(jié)點(diǎn)添加一個(gè)class
    classes.forEach((value) => {
      for(let i = 0;i < nodes.length; i++){
        node[i].classList.add(value)
      }
    })
  }

  nodes.text = function(text){                              //獲取、修改文本內(nèi)容
    if(text === undefined){                                //判斷傳入?yún)?shù)是否為空,如果為空則表明要獲取文本
      var texts = []
      for(let i = 0; i < nodes.length; i++){
        texts.push(nodes[i].textContent)  
      }
      return texts
    }else{                                                 //傳入?yún)?shù)不為空表明要修改文本
      for(let i = 0; i < nodes.length; i++){
        nodes[i].textContent = text 
      }
    }
  }

  return nodes
}

接下來大概講解一下過程:

首先我們聲明一個(gè)空對象,這個(gè)空對象呢用來存放最終返回的內(nèi)容。jQuery一開始接受一個(gè)節(jié)點(diǎn)或者一個(gè)選擇器,接收到以后的第一步需要去判斷一下這個(gè)參數(shù),如果接受到的是一個(gè)選擇器,就把所以符合選擇器的結(jié)果放到nodes空對象中,為了得到一個(gè)純凈的偽數(shù)組,我們將結(jié)果遍歷再放到nodes對象中,這樣nodes對象的原型鏈中只有Object的屬性。如果接受的是一個(gè)節(jié)點(diǎn),那我們直接把節(jié)點(diǎn)存放到nodes對象中,統(tǒng)一為偽數(shù)組的形勢。

第二步就可以設(shè)置api了。這里我們寫了兩個(gè)常見的api,一個(gè)是給節(jié)點(diǎn)添加一個(gè)class,另一個(gè)是修改文本內(nèi)容。在text這個(gè)api這里我們合成了兩個(gè)功能,當(dāng)你在調(diào)用text的時(shí)候,如果沒有帶參數(shù),就默認(rèn)為是想獲取文本內(nèi)容,如果帶了參數(shù),那就是想修改文本內(nèi)容。

關(guān)于如何實(shí)現(xiàn)一個(gè)jQuery的api今天就講到這里,原理還算簡單,認(rèn)真閱讀就能掌握,希望本文能對你有所幫助,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容