簡(jiǎn)單實(shí)現(xiàn)JQuery

    // jquery構(gòu)造函數(shù)
    function Jquery(selector, context) {
      return new Jquery.fn.init(selector, context)
    }
    // 簡(jiǎn)化書寫, 方便訪問原型
    Jquery.fn = Jquery.prototype = {
      constructor: Jquery,
      length: 0,
      push: Array.prototype.push,
      slice: Array.prototype.slice,
    }

    // 實(shí)現(xiàn)獲取dom元素類, init是一個(gè)構(gòu)造函數(shù),用來生成jquery的dom對(duì)象的
    Jquery.fn.init = function(selector, context) {
      if (!selector) return
      this.context = context || document
      this.elements = this.context.querySelectorAll(selector)
      this.length = 0
      // 遍歷elements
      for (let i = 0; i < this.elements.length; i++) {
        this[i] = this.elements[i]
        this.length++
      } 
    }

    // init類的原型指向Jquery的原型,使實(shí)例化對(duì)象能訪問Jquery原型上的方法
    Jquery.fn.init.prototype = Jquery.prototype
    
    // 為jquery添加靜態(tài)方法或原型方法。
    Jquery.extends = Jquery.fn.extends = function(obj) {
      for (let key in obj) {
        this[key] = obj[key]
      }
    }

    // 將這些方法拓展到Jquery原型上, 那么init的實(shí)例化對(duì)象就能訪問這些方法
    Jquery.fn.extends({
      html: function(text){
        for (let i = 0; i < this.length; i++) {
          this[i].innerHTML = text
        }
      // 返回this,打點(diǎn)調(diào)用
        return this
      },
      css: function(key, val) {
        if (typeof key === 'string') {
          for (let i = 0; i < this.length; i++) {
            this[i].style[key] = val
          }
        } else {
          for(let i = 0; i < this.length; i++) {
            for (let k in key) {
              this[i].style[k] = key[k]
            }
          }
        
        }
        return this
      }
    })
    // 簡(jiǎn)化Jquery書寫
    const $ = Jquery
    // console.log($('p'))
    $('p')
    .css('color', 'red')
    .html('嘻嘻哈哈')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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