说到jquery,那就给大家先简单的介绍一下什么是jquery

jquery是JavaScript函数的一种封装。jQuery封装了JavaScript常用的功能代码(函数),提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

  1. jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John
    Resig发布。
  2. jquery是指一种封装好的JavaScript函数库,一个轻量级的"写的少,做的多"的JavaScript库。
  3. jQuery封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
  4. jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。

详情请去jquery官网 查看!

目录

  • 说到`jquery`,那就给大家先简单的介绍一下什么是`jquery`
  • 一,封装jquery`
    • 1,jqery的封装原理:
    • 2,如何封装自己的 jQuery
    • 2,jquery 方法封装
  • 二,下面是我封装jquery的代码

一,封装jquery`

接下来就说我封装jquery的一些心得和在网上查找的一些资料,由什么问题和错误望告知,谢谢!`

1,jqery的封装原理:

1、js的全局代码区只有一个,这样就会造成同名变量的值会被覆盖。‘

2、使用对象封装,将代码封装到对象中,但对象如果被覆盖,则全部失效,风险极高。

3、使用工厂模式,将代码进行封装,但是并没有解决问题。

4、将封装的函数名字去除,避免覆盖,但是函数没有办法调用了

5、匿名自调用。’可以在页面加载的时候调用一次,但是不能重复调用,并且数据没有办法获取。

6、使用闭包,在全局区中不能够获取函数体内的数据。使用更大作用域的变量来记录小作用域变量的值。

2,如何封装自己的 jQuery

返回new 一个初始化函数

 function jQuery(selector){// 返回new 一个初始化函数return new jQuery.fn.init(selector);}

定义其构造函数显式原型

// 定义JQuery构造函数的显示原型jQuery.fn =jQuery.prototype = {constructor:jQuery,jquery:"9.0.0",length:0,get(index){return this[index];},

这里使用沙箱模式,可以防止全局污染

<script>
(function(window,undefined){var jQuery = function (ele){return new jQuery.prototype.init(ele)
}

原型替换

jQuery.fn = jQuery.prototype ={constructor:jQuery,
init:function(ele){var ele = document.querySelectorAll(ele);
[].push.apply(this,ele);
},

这里用 css () 举例子

css:function(name,value){if(arguments.length == 2){

设置 css 样式

}else if(arguments.length == 1){if( typeof name === 'object'){

设置多个样式

}else if(typeof name == 'string'){// 通过 getComputedStyle 获取
}
}
return this;
}
}

最关键的一步

jQuery.prototype.init.prototype = jQuery.fn;

暴露给全局

window.jQuery = window.$ = jQuery;
})(window)
</script>

2,jquery 方法封装

给jquery 身上设置全局方法;

         // 方法一:jQuery.myFunction = function(str){console.log(str);}//方法一调用:$.myFunction('直接给jq身上设置全局方法');//方法二:// 同时添加多方法jQuery.extend({myFunction:function(str){console.log(str);},myFunction1:function(str){console.log(str);}})//方法二调用:$.myFunction('给jq身上同时添加多个全局方法');//方法三:jQuery.nameSpaces = {myFunction:function(str){console.log(str);},myFunction1:function(str){console.log(str);}}//方法三调用:$.nameSpaces.myFunction('用命名空间的方式给jq添加多个全局方法');

二,下面是我封装jquery的代码

jquer.js

;(function(){// 匿名函数自执行// jQ的构造函数function jQuery(selector){// 返回new 一个初始化函数return new jQuery.fn.init(selector);}// 定义JQuery构造函数的显示原型jQuery.fn =jQuery.prototype = {constructor:jQuery,jquery:"9.0.0",length:0,get(index){return this[index];},/* click(callback){// 单击时候让this的每个元素执行callback回调函数for(var i=0;i<this.length;i++){this[i].addEventListener("click",callback);}// jq实现链式操作每个函数执行完毕都是返回thisreturn this;}, *//* toggle(){// 遍历每个元素如果display不是none就隐藏,否则就显示for(var i=0;i<this.length;i++){if(this[i].style.display!="none"){this[i].style.display="none"}else{this[i].style.display="block";}}return this;}, */each(callback){for(var i=0;i<this.length;i++){callback(this[i])}return this;},click(callback){// item指向的被遍历的每个元素this.each(function(item){// 让每个元素注册click事件 执行callback方法// 也就是click 括号里面的回调函数item.addEventListener("click",callback);})return this;},toggle(){this.each(function(item){if(item.style.display!="none"){item.style.display="none"}else{item.style.display="block";}})}}// jq初始化函数jQuery.fn.init =function(selector){// 获取到选择列表var list = document.querySelectorAll(selector);// 当前对象的长度this.length = list.length;for(var i=0;i<list.length;i++){//遍历类别对 this赋值this[i] = list[i];}}// 如何让new  init 产生对象拥有JQuery显示原型上的所有方法呢?jQuery.fn.init.prototype = jQuery.fn;// 全局对jQuery与$可以访问window.$=window.jQuery = jQuery;})()

jquery.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/jquery-9.0.0.js"></script></head><body><h1>jquery还是大哥吗?</h1><p>是的</p><h1>市场占用96.8%</h1><button>切换</button><script>// jq实现链式操作// 给button注册一个点击事件// each函数编写$("button").click(function(){// 让h1切换显示与隐藏$("h1").toggle().click(function(){alert(this.innerText);});})</script></body>
</html>

封装自己的 jquery 框架相关推荐

  1. jQuery系列 第八章 jQuery框架Ajax模块

    第八章 jQuery框架Ajax模块 8.1 jQuery框架中的Ajax简介 Ajax技术的核心是XMLHTTPRequest对象,该对象是Ajax实现的关键,发送异步请求.接收服务器端的响应以及执 ...

  2. jQuery框架学习第二天:jQuery中万能的选择器

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  3. jQuery框架学习第一天:开始认识jQuery

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  4. [转载]浅析jQuery框架与构造对象

    浅析jQuery框架与构造对象 这是一些分析jQuery框架的文字 针对jQuery 1.3.2版本 面向的读者应具备以下要求 1.非常熟悉HTML 2.非常熟悉javascript语法知识 3.熟悉 ...

  5. jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集  jQuery框架学习第四天:使用jQ ...

  6. jQuery框架学习第七天:jQuery动画–jQuery让页面动起来!

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  7. jQuery框架学习第五天:事件与事件对象

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  8. jquery框架分析-构造jquery对象初步

    这是一些分析jquery框架的文字 针对jquery 1.3.2版本 面向的读者应具备以下要求 1.非常熟悉HTML 2.非常熟悉javascript语法知识 3.熟悉javascript面向对象方面 ...

  9. 基于JQuery框架的AJAX

    基于JQuery框架的AJAX/jquery这个类库相当不错...简单..功能还强大在JQuery中,AJAX有三种实现方式:$.ajax(),$.post,$.get().XHTML(主要):< ...

最新文章

  1. 不使用配置文件动态注册HttpModule
  2. Python机器学习基础教程-第2章-监督学习之K近邻
  3. (转)RabbitMQ学习之spring整合发送异步消息(注解实现)
  4. vue 组件基本使用
  5. asp版新闻发布今日弄好
  6. ngnix 作用(通俗易懂)【转载】
  7. c#二维数据最大最小值_C#| 打印类型,各种数据类型的最大值和最小值
  8. AIX 系统下做 rootvg
  9. Altium Designer 元件封装库与3D模型大全
  10. 个人所得税个人计算机,个人所得税计算器(PC)版
  11. C程序设计第五版谭浩强课后答案 第八章习题答案
  12. 宇宙APP简单的性能测试
  13. 更多免费资源解压密码_更多免费(几乎免费)法律图片资源
  14. Android中MVC,MVP和MVVM的区别
  15. composer错误
  16. 【Adobe】怎样给音频升降调?
  17. Binding的学习与使用
  18. 按照lfw pairs.txt的格式生成自己的pairs.txt
  19. 读余光中散文,看到一句诗(In me the tiger sniffs the rose),感觉很经典,摘录如下
  20. 一台服务器部署多个版本的MySQL,不会冲突吗?如何管理?

热门文章

  1. Opencv-contours、minAreaRect测量物体偏转角度(附代码段)
  2. Android使用OkHttp实现登录注册功能
  3. 华为OD机试 - 五键键盘(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
  4. Spring中进行事务管理的两种方式
  5. 什么是promise?什么是回调函数?
  6. 【100%通过率】华为 OD 机试真题 C++ 实现【最大报酬】【2022.11 Q4 新题】
  7. 木木机器人tf卡_TF卡被特意隐藏了,。怎么拷贝出来里面的文件呢?
  8. 抖音为例:拆解数据分析常见的业务指标
  9. python装饰器传参与不传参_Python装饰器不会传参?别着急,这篇文章为你解惑
  10. 由神经网络机器学习的算法谈谈人的成瘾以及疲惫机制