当前位置: 首页 > article >正文

Web前端高级工程师培训:封装自己的库

封装自己的库

课前准备

  • 工具
    • 编辑器 VSCode
    • 浏览器 Chorme
  • 前置知识
    • Js基本知识

课堂主题

一、定义函数返还JQ对象

二、ready方法和原生节点处理

三、选择器器封装

四、封装JQ的eq方法

五、封装JQ的click方法

六、jQ中的链式操作

七、封装JQ的css方法

八、cssHooks扩展功能

知识点

  • 对象成员与类成员
  • 判断类型
  • 链式调用实现
  • 正则表达式

jquery特性说明

​ 知己知彼,百战不殆;想要知道jq功能如何实现,先要了解其特性;

###如何实现链式调用

根据对象的特性,发还jq对象;

  • 返还this对象
class Jq{
    click(){
        console.log("click...");
        return this;
    }
}
let myjq = new Jq();
myjq.click().click();
  • 返还实例化对象

处理ready和原生节点

  • 针对ready方法做兼容处理
  • 原生节点直接保存
   if (typeof arg === "string") {
              let els = document.querySelectorAll(arg);
          } else if (typeof arg === 'function') {
              window.addEventListener("DOMContentLoaded",arg,false);
          } else {
              if(typeof arg.length === 'undefined'){
                  // 一个对象;
                  this[0] = arg;
                  this.length = 1;
              }else{
                  // 对象类数组;
                  this.addEle(arg);
              }
          }

###选择器器封装

  • $(“.box”)选择节点实现

封装jq的eq方法

​ 注意返还对象,实现链式调用

 eq(index){
        // 继续操作
        // return this[index];
        return new Jq(this[index],this);
    }

###实现end方法

返还上次操作的节点;

 end(){
       return this.prevObject;
    }

实现jq里的click方法

绑定click事件

click(fn) {
        for (let i = 0; i < this.length; i++) {
            this[i].addEventListener("click", fn, false);
        }
    }

实现on方法

和click方法类似,可以处理多个事件;

实现css方法

  • 获取样式封装

  • 设置样式封装

    • cssNumber

      {
              animationIterationCount: true,
              columnCount: true,
              fillOpacity: true,
              flexGrow: true,
              flexShrink: true,
              fontWeight: true,
              gridArea: true,
              gridColumn: true,
              gridColumnEnd: true,
              gridColumnStart: true,
              gridRow: true,
              gridRowEnd: true,
              gridRowStart: true,
              lineHeight: true,
              opacity: true,
              order: true,
              orphans: true,
              widows: true,
              zIndex: true,
              zoom: true
          }
      

总结

  • 类及对象

  • 链式调用

  • 对象的包装

  • 拓展功能

下节课预告

  • 异步专题

http://www.kler.cn/a/350215.html

相关文章:

  • FortiGate配置远程拨号VPN
  • 特殊类设计
  • sql实战解析-sum()over(partition by xx order by xx)
  • 模块化架构与微服务架构,哪种更适合桌面软件开发?
  • 以Python构建ONE FACE管理界面:从基础至进阶的实战探索
  • 【ESP32】ESP32连接JY61P并通过WIFI发送给电脑
  • 【洛谷】AT_abc188_c [ABC188C] ABC Tournament 的题解
  • Elastic Stack--16--ES三种分页策略
  • docker使用基础
  • 【含文档】基于Springboot+Vue的白云山景点门票销售管理系统(含源码+数据库+lw)
  • 前端导出json数据函数
  • 【fisco学习记录】搭建第一个单群组联盟链
  • Redis 完整指南:命令与原理详解
  • dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题
  • 请求参数中字符串的+变成了空格
  • Redis技术指南:数据类型、事务处理与过期键管理
  • 倍福TwinCAT程序中遇到的bug
  • 【专题】智启未来:新质生产力引擎驱动下的智能制造行业革新报告合集PDF分享(附原数据表)
  • 2024全网最详细CTF入门指南、CTF夺旗赛使用工具及刷题网站
  • 「从零开始的 Vue 3 系列」:第十一章——跨域问题解决方案全解析
  • Linux-标准IO常用函数
  • 联名物料常泄漏?一端叠满“安全buff”
  • Spring Boot课程问答:技术难题专家解答
  • 从SRE视角透视DevOps的构建精髓
  • 基于Java+Springboot+Vue开发的酒店客房预订管理系统
  • Opencv:FisherFace算法实现人脸检测