用原生DOM實現(xiàn)一個jQuery的API

今天第一次接觸jQuery,先簡單的實現(xiàn)一個jQuery的API,實現(xiàn)兩個方法:

  1. addClass()
  2. setText()

主要講講實現(xiàn)的過程與思路,其實也比較簡單,主要就是把常用的DOM對象封裝成函數(shù)即可。
1.首先建立一個函數(shù),并初始化一個object,最終函數(shù)中返回這個object,并且?guī)в?0,1,2....等key,其value是讀取到的DOM元素或者是節(jié)點;object還含有l(wèi)ength,長度為key的最大值+1;object再帶有多種方法key,一一對應其相應的函數(shù)。其實這個object就是一個偽數(shù)組,類似于參數(shù)arguments。
2.還要判斷實現(xiàn)的函數(shù)參數(shù)是否為string類型,或者是Node節(jié)點,然后返回不同的objects。
3.主要就是通過原生的DOM API :document.querySelectorAll()實現(xiàn)object的部分key。
4.還有一點要使用到window這個全局對象將該函數(shù)封裝好。
下面就是具體代碼:

var sunDom = function(string) {
    let nodes = {length: 0}
    if (typeof string === 'string') {
        var elements = document.querySelectorAll(string)
        for (let index = 0; index < elements.length; index++) {
            const element = elements[index]
            nodes[index] = element
            nodes.length += 1
        }
    } else if(string instanceof Node) {
        nodes = {
            0: string,
            length: 1
        }
    }

    nodes.addClass = function addClass(classes) {
        for (let index = 0; index < nodes.length; index++) {
            const element = nodes[index]
            element.classList.add(classes)          
        }
    }

    nodes.setText = function(string) {
        for (let index = 0; index < nodes.length; index++) {
            const element = nodes[index]
            element.textContent = string      
        }
    }
    console.log(nodes)
    return nodes
}

window.jQuery = sunDom
window.$ = jQuery

var $div = $('div')
$div.addClass('red') // 可將所有 div 的 class 添加一個 red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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