五分钟教你快速搭建一个极其简易的jquery库,可以自己任意添加拓展内容!

五分钟教你快速搭建一个极其简易的jquery库,可以自己任意添加拓展内容!

一、写在开头
最近一直在搞小程序,有点腻了,顺便复习了一下js,刚好可以写一个简单的jquery,见笑了各位。

二、发现问题
jquery现如今比较少用,但是对于我们掌握原型和原型链,深入了解class的本质什么的,还是比较重要的,大家可以参考着复习一下。

三、解决问题
其实还是比较容易的,主要分为三步:
第一步、获取所需要的元素节点并且赋值给我们的类(在构造函数中);
第二步、添加自己需要的方法;
第三步、根据需要选择在原型上添加插件或者继承这个类自己直接造轮子;
具体详细的我已经在下面给出了,包括一些打印结果帮助各位理解!

<!DOCTYPE html>
<html>
<head>
	<title>手动实现一个极其简易的jquery</title>
</head>
<body>
	<p>无限忠诚</p>
	<P>为了帝皇</P>
<script type="text/javascript">
	class jquery{
		constructor(selector){//selector代表要查找的元素,由我们自己决定,如p
			const result=document.querySelectorAll(selector)
			//通过这个DOM操作方法获取所有的“selector”元素,返回的是NodeList数组
			//NodeList 对象表示节点的集合。可以通过索引访问,索引值从 0 开始。
			//注意NodeList其实里面有一大串内容,最重要的是里面有textContent属性存放元素的文本,如“无限忠诚”
			console.log(result);//NodeList(2) [p, p]
			const length=result.length
			//检测该元素代表的NodeList数组的长度
			for(let i=0;i<length;i++){
			//循环我们的NodeList数组
				this[i]=result[i]
				//其实它拿到只是textContent,也就是文本赋值给我们的jquery。这里的this其实就是jquery/以后的实例对象
				console.log(this[i]);//<p>无限忠诚</p>
				console.log(result[i]);//<p>无限忠诚</p>
				console.log(this);//jquery {0: p}
			}//这个时候我们的jquery其实已经有jquery {0: p, 1: p}这些内容了
			this.length=length
			this.selector=selector
			//当然这还不够,我们给它加长度和选择元素两个属性
			console.log(this);//jquery {0: p, 1: p, length: 2, selector: "p"}
		}
		//下面是定义一些小方法

		get(index){//根据索引返回对应的值,这里的this依然是jquery类
			return this[index]
		}

		each(fun){//定义一个遍历的方法,fun是我们实际遍历完成需要做的事情
			for(let i=0;i<this.length;i++){
				const element=this[i]
				fun(element)
			}
		}

		//如果考虑到添加一些小插件可以通过jquery.prototype.插件名=function(){}添加

		//如果是想做比较大的修改,可以通过继承这个类,自行添加!
	}



	const $p=new jquery('p');
	console.log($p)//jquery {0: p, 1: p, length: 2, selector: "p"}
	console.log($p.get(1));//	<P>为了帝皇</P>
	$p.each((element)=>{
		console.log(element.nodeName);
	});//p*2
</script>
</body>
</html>

好了,目前先到这,我是O5,希望能帮助到大家,共勉!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值