用 JS 封装一个库的基本思路

2023-4-21 17:00| 发布者: wanhu| 查看: 144| 评论: 0

摘要: Hello大家好:今天我尝试用 JS 来实现 jQuery 中最简单的 API:addClass,一共有三种写法:第一种写法:闭包!DOCTYPE html html lang="zh" head meta charset="UTF-8" meta http-equiv= ...

Hello大家好:今天我尝试用 JS 来实现 jQuery 中最简单的 API:addClass,一共有三种写法:

第一种写法:闭包

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
font-size: 30px;//字体大小
}
div{
margin: 20px;//外边距
}
.red{
border: 10px solid gray;//边框
}
.green{
background: lightgreen;//背景色
}
</style>
</head>
<body>
<div class="red">1</div>
<div class="red">2</div>
<div class="red">3</div>
<div class="red">4</div>
<div class="red">5</div>
<div class="red">6</div>
<div class="red">7</div>
<div class="red">8</div>
<div class="red">9</div>
<div class="red">10</div>
<script src="main.js"></script>
</body>
<script>
function jQuery (选择器字符串) {//声明一个函数jQuery名字叫(选择器字符串)

const 所有标签 = document.querySelectorAll(选择器字符串)//选中所有(选择器字符串)并且赋值给所有标签

return {
addClass(className){
for (let i = 0; i < 所有标签.length; i++) {
const 标签 = 所有标签[i]
标签.classList.add(className)
}
}
}
}

const $ = jQuery//把jQuety赋值给$

$('.red').addClass('green')
</script>
</html>

第二种方法:原型

<!DOCTYPE html>
<html lang="zh">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
font-size: 30px;
}

div {
margin: 20px;
}

.red {
border: 10px solid gray;
}

.green {
background: lightgreen;
}
</style>
</head>

<body>
<div class="red">1</div>
<div class="red">2</div>
<div class="red">3</div>
<div class="red">4</div>
<div class="red">5</div>
<div class="red">6</div>
<div class="red">7</div>
<div class="red">8</div>
<div class="red">9</div>
<div class="red">10</div>
<script src="main.js"></script>
</body>
<script>
function jQuery(选择器) {
const 标签伪数组 = document.querySelectorAll(选择器);
this.标签数组 = Array.from(标签伪数组);
}
jQuery.prototype = {
constructor: jQuery,
addClass(className) {
this.标签数组.forEach((标签) => {
标签.addClass.add(className);
});
}
};
const $ = jQuery;

const button = document.getElementById("btn");
button.onclick = function () {
new $(".red").addClass("green");
};
</script>
</html>

第三种:使用类

因为很少使用类所以就不写了


路过

雷人

握手

鲜花

鸡蛋
版权声明:免责声明:文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递 更多信息之目的, 并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。
已有 0 人参与

会员评论

相关分类

 万奢网手机版

官网微博:万奢网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
上海万湖珠宝贸易有限公司 地址:上海市宝山区共和新路4727号新陆国际大厦1003-1007室 网站经营许可证 备案号:沪ICP备11005343号-12012-2019
万奢网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,宝山实体店,支持全国范围上门回收手表
返回顶部