实现一个 jQuery 的API

作者: 地球心 | 来源:发表于2018-02-09 23:23 被阅读59次

上图,看最终结果:

// 实现一个 jQuery 的API

window.jQuery = function(_x){
  let e;
  if(typeof _x === "string"){
    e = document.querySelectorAll(_x);
  }else{
    e = _x;
  }
  return {
    addClass: function(_classStr){
      for(let i=0; i<e.length;i++){
        e[i].classList.add(_classStr);
      }
    },
    setText: function(_textStr){
      for(let i=0; i<e.length;i++){
        e[i].textContent = _textStr;
      }
    }
  }
}
window.$ = jQuery

var $div = $('div')

$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

过程中一些细节:

第一部分:

开启一个独立的命名空间,window.jQuery = {},可改写成window.jQuery = function(){ return {};}

第二部分:

window.jQuery返回的是一个对象,对象里边存在一些可以操作的方法 .addClass() .setText()

return {
  addClass: function(){},
  setText: function(){}
}

需要注意的是对象里边存在着遍历操作。

第三部分

window.$ = jQuery 是什么鬼?
那就翻译一下吧,看这里 >>> window.$ = window.jQuery
其实就是简单的赋值(引用),为了更方便的使用这个 jQuery 。但是有一种习俗(约定成俗的规则),jQuery的变量前面要加 $ 前缀。防止以后犯晕不知道那个是原生的DOM,那个是jQuery的。

第四部分(最后一点)

细心的你可能会发现,window.jQuery中产生一个闭包了。 对就是产生一个闭包(闭包 = 环境因子 + 操作因子)。

  • 环境因子: 变量 e
  • 操作因子: addClass() setText()
其实这些东西在实际的 jQuery 函数库中是就是这样的(不过他们实现的更高级一些),思路基本都相通的。

相关文章

  • 初探jQuery

    jQuery API的实现 自己模拟jQuery的一个API预览:http://js.jirengu.com/pa...

  • 如何实现一个jQuery的api

    什么是jQuery 实现jQuery的api 实现jQuery的api说起来也很简单,就是对DOM进行封装。话不多...

  • 实现一个 jQuery 的 API

    实现一个 jQuery 的 API 实现步骤 命名空间模式 这个模式的调用为jQuery.addClass(ite...

  • 前端基础入门五(掌握jQuery的常用api,实现动态效果)

    jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常...

  • 用原生DOM实现一个jQuery的API

    今天第一次接触jQuery,先简单的实现一个jQuery的API,实现两个方法: addClass() setTe...

  • 实现一个 jQuery 的 API

    想要实现一个以下功能用原生js的DOM API来实现一个类jQuery API的功能 1、首先获取DOM元素 判断...

  • Angularjs选项卡

    用jQuery实现选项卡,通过操作dom节点实现,jQuery多数api方便操作dom。例如next()、sibl...

  • 2018-08-22

    实现JQuery之API 1.需求分析window.jQuery = ???window.div = div.ad...

  • 实现jQuery的API

    1. jQuery函数结构 jQuery函数要方便与输入一个选择器参数或则节点正确返回一个伪数组,便于对其明确执行...

  • 实现一个jQuery API

    通过以下四步实现jQuery: 接受一个node或选择器 封装成一个伪数组 在这个伪数组上加上几个API 把这个伪...

网友评论

    本文标题:实现一个 jQuery 的API

    本文链接:https://www.haomeiwen.com/subject/yggqtftx.html