JS库封装的改进

orangepi 5 plus ubuntu24.04上安装redroid OrangePi 5 Plus运行reDroid云手机方案总结 在RK3588+Ubuntu 24.04上部署reDroid(Android容器化方案)的关键步骤: 内核要求:确保启用binderfs(无需ashmem,新版reDroid使用memfd替代); 安装流程: 安装Docker并配置代理加速镜像拉取; 拉取reDroid镜像(推荐Android 12/13 ARM64版本); 通过挂载binderfs启动容器,指定分辨率与DPI参数; 多实例管理: 脚本化创建多个容器(如8个实例),分配独立端口 阅读详情

改进的地方:

  1. //jquery内部封装了一个Sizzle引擎来获取DOM元素document.querySelectorAll(selectors);
  2. //jquery为了后续操作DOM元素方便,将dom元素放在了实例对象身上//类似数组,可以用for遍历,称为伪数组
    for(var i=0;i<elements.length;i++){
    this[i]=elements[i];//给this创建属性从0开始的i
    }
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div>1</div>
		<div>2</div>
		<p>3</p>
		<span id="spa">4</span>
	</body>
	<script type="text/javascript">
	//定义一个自调函数
		(function(global){
			function jquery(selectors){
				return new fn(selectors);
			}
			
			function Fn(selectors){
				//jquery内部封装了一个Sizzle引擎来获取DOM元素
				var elements=document.querySelectorAll(selectors);
				//jquery为了后续操作DOM元素方便,将dom元素放在了实例对象身上
				//类似数组,可以用for遍历,称为伪数组
				for(var i=0;i<elements.length;i++){
					this[i]=elements[i];//给this创建属性从0开始的i
				}	
				this.length=elements.length;
			}
//			Fn.prototype.css=function(name,value){	
//				for(var i=0;i<this.length;i++){
//					this[i].style[name]=value;
//				}	
//			}
			//直接替换fn的原型对象(当原型中需要定义的方法过多时使用)
			Fn.prototype={
				constructor:Fn,
				css:function(name,value){
					for(var i=0;i<this.length;i++){
					this[i].style[name]=value;
					}
				}
			}
			window.$=window.jquery=jquery;//给window对象添加属性$和jquery,并设置值为jquery
		})(window)
		
		$('div').css('color','red');
		$('#spa').css('color','yellow')
	</script>
</html>

继续优化改进
1:在jquery第一次优化,Fn的名称改为init,将init()放入jquery原型中
2:jquery再一次优化,替换原型(将init及css方法写入jquery对象的原型中)

	<body>
		<div>1</div>
		<div>2</div>
		<p>3</p>
		<span id="spa">4</span>
	</body>
	<script type="text/javascript">
	//定义一个自调函数
		(function(global){
			function jquery(selectors){
				return new jquery.prototype.init(selectors);
			}
			//改进1:在jquery第一次优化,将init()放入jquery原型中
//			jquery.prototype.init=function(selectors){
//				var elements=document.querySelectorAll(selectors);
//				for(var i=0;i<elements.length;i++){
//					this[i]=elements[i];//给this创建属性从0开始的i
//				}	
//				this.length=elements.length;
//			}
//			初始的写法:将Fn的名称改为init
//			function init(selectors){
//				var elements=document.querySelectorAll(selectors);
//				for(var i=0;i<elements.length;i++){
//					this[i]=elements[i];//给this创建属性从0开始的i
//				}	
//				this.length=elements.length;
//			}
//			jquery.prototype.init.prototype={
//				constructor:init,
//				css:function(name,value){
//					for(var i=0;i<this.length;i++){
//					this[i].style[name]=value;
//					}
//				}
//			}
//			初始写法结束
//优化2:jquery再一次优化,替换了原型
//将init函数及css方法写入jquery对象的原型中
		jquery.prototype={
				constructor:jquery,
				init:function(selectors){
					var elements=document.querySelectorAll(selectors);
					for(var i=0;i<elements.length;i++){
							this[i]=elements[i];//给this创建属性从0开始的i
						}	
					this.length=elements.length;
				},
				css:function(name,value){
					for(var i=0;i<this.length;i++){
					this[i].style[name]=value;
					}
				}
			}
		//重点:为了让init实例对象访问到css方法
		jquery.prototype.init.prototype=jquery.prototype;
			window.$=window.jquery=jquery;//给window对象添加属性$和jquery,并设置值为jquery
		})(window)
		
		$('div').css('color','red');
		$('#spa').css('color','yellow')
	</script>
国产操作系统应用迁移与适配 了解国产操作系统的背景及意义 阅读详情

相关推荐

Vitis HLS 学习指南与实践教程

Vitis HLS 学习指南与实践教程摘要:本文系统介绍了AMD Vitis HLS工具及其应用。HLS技术将C/C++代码自动转换为硬件描述语言,显著提升FPGA开发效率(5-10倍)。文章对比了HLS与传统RTL设计的优势,包括抽象级别高、开发周期短、代码重用性强等特点。详细讲解了Vitis HLS工具链的核心功能,包括支持的C/C++特性(如任意精度数据类型)、开发流程(项目创建-代码编写-仿真-综合)以及关键优化技术(流水线、循环展开、数组分割等编译指示)。通过具体代码示例展示了HLS设计方法,为F

weixin_44707118的博客 1401

JS库封装改进的简化

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div>1</div> <div>2</div> <p>3</p> <span id="spa">4</span> &

生活步步是坎坷,笑到最后是大哥 234

Android 的端智能学习路径

基础层:先补齐 Android 进阶(JNI / 性能优化)和 AI 基础概念,无需深入算法开发;核心层:掌握 TFLite 的模型加载、推理、量化,能完成基础端侧推理;落地层:聚焦实战场景(图像 / OCR / 语音),解决工程化问题(模型管理、异常处理);优化层:通过模型量化、硬件加速、工程优化,提升推理性能和用户体验。

hqiangtai的博客 344

Marvel API Node.js 封装库

Marvel API Node.js 封装库 本文将为您介绍一个开源项目:Marvel API的Node.js封装库。该项目由Five is Prime团队开发,使用JavaScript语言编写。 项目基础介绍 Marvel API Node.js封装库是一个用于与官方Marvel Comics API交互的Node.js库。它为开发者提供了一系列方便的方法,用于访问Marvel Comics A...

gitblog_00778的博客 447

【C++】小猫钓鱼纸牌游戏--C++实现

小猫钓鱼问题: 描述:初始,两个人各有n张牌(牌面0-10),顺序固定,只能按顺序出牌。然后,两个人轮流在桌面上以接龙的方式出牌,当某个人放置的牌在桌面上已经出现时,他收起相同牌面及其中间的牌作为自己的筹码,同时需要再放一张牌到桌面。某人手上的牌出完后,另一个人继续出,直到两人手上都没牌为止,输出结束时两个人手上的筹码数。 #include<iostream> using namespace std; struct queue { int head; //队列首 int tail; //

qq_41344430的博客 3202

6轴机械臂(拟人臂+球形腕(三轴相交于一点))正逆运动学求解

1、DH坐标下机械臂参数 theta=[pi/10,pi/2,pi/4,-pi/4,pi/4,-pi/8];%关节角度 a=[0, 0.260, 0.025, 0, 0, 0];%连杆长度 d=[0, 0, 0, 0.280, 0, 0.072];%偏移距离 alpha=[pi/2, 0, pi/2, -pi/2 , pi/2, 0];%RBR型6轴机械臂 使用...

qq_33374294的博客 7883

数字海洋API封装库——Node.js 实现的数字海洋v2 API封装

数字海洋API封装库——Node.js 实现的数字海洋v2 API封装 1. 项目基础介绍及主要编程语言 本项目是一个开源的Node.js库,名为do-wrapper,主要使用JavaScript语言编写。它为开发者提供了一种便捷的方式来访问和操作Digital Ocean的v2 API。该库旨在简化API调用流程,提高开发效率。 2. 项目核心功能 do-wrapper库的核心功能包括: AP...

gitblog_00713的博客 354

中移物联ML307C模组OPENCPU开发环境搭建全攻略

本文详细介绍了中移物联ML307C模组OPENCPU开发环境搭建的全过程。从OPENCPU模式的核心优势解析,到SDK获取、Python与scons工具安装,再到解读SDK目录结构与实战编译命令,最后提供常见问题避坑指南,帮助开发者快速构建高效的物联网应用编译环境。

weixin_29168393的博客 742

node-mandrill:Node.js 实现的 MailChimp Mandrill API 封装库

node-mandrill:Node.js 实现的 MailChimp Mandrill API 封装库 1. 项目基础介绍和主要编程语言 node-mandrill 是一个使用 Node.js 开发的模块,旨在为开发者提供一种简单的方式来访问 MailChimp 的 Mandrill API。该模块的目的是最小化开发者使用 Mandrill API 时的开销,使得除了 Mandrill API ...

gitblog_00832的博客 445

OPTEE v4.4.0 qemu_v8环境搭建(支持Hafnium)

一、前提条件 二、拉取代码 三、下载工具链 四、修改代码 五、编译 六、运行

AI-安全-功耗 889

SAP HANA 的一个王炸技能,Smart Data Access

SAP HANA Cloud近期推出Knowledge Graph Engine(KGE),支持RDF三元组存储和SPARQL查询,与向量引擎等组件协同实现混合检索。同时文章介绍了HANA的Smart Data Access(SDA)功能,它通过虚拟表技术实现跨系统联邦查询,支持30+种数据源(不包括PostgreSQL),适用于混合云场景。SDA通过谓词下推优化性能,典型应用包括冷热数据分层和跨系统报表分析。对于PostgreSQL连接需求,建议使用HANA的Smart Data Integration方

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 497

【亲测免费】 Node-Chromedriver: 一个强大的ChromeDriver封装库

Node-Chromedriver: 一个强大的ChromeDriver封装库 Node-Chromedriver是一个由JavaScript编写的NPM库,用于封装ChromeDriver,使得开发者能够更加便捷地在Node.js环境中使用ChromeDriver进行自动化测试。 项目基础介绍 Node-Chromedriver是一个Installer和Wrapper,它帮助开发者下载、管理和使...

gitblog_00409的博客 648

Oracle数据库表空间使用情况查询

在Oracle数据库中,表空间(Tablespace)是用于存储表、索引和其他数据库对象的逻辑存储单元。了解表空间的使用情况对于数据库管理员和开发人员来说是非常重要的,因为它可以帮助他们监控数据库的空间使用情况并进行容量规划。本文将介绍如何查询Oracle数据库中的表空间使用情况。通过执行以上SQL查询语句,你可以获得Oracle数据库中表空间的使用情况、文件大小和表空间大小等信息。这些信息可以帮助你了解数据库的存储情况,并进行适当的优化和容量规划。查看表空间的数据文件和表空间大小。查看表空间的使用情况。

CsmbPascal的博客 858

客户端JavaScript实战撤销恢复功能总结

      撤销和恢复功能,英文为:Undo和Redo,快捷键分别为Ctrl+Z和Ctrl+Y。它们是一组很常见的功能,在很多系统和软件中都有这两个功能。随着浏览器的功能越来越强,Web App将越来越占据重要位置,基于客户端JavaScript实现的撤销和恢复功能将越来越多,最近在工作中,完成了一个web系统的撤销和恢复功能,特写下一些心得以供分享。       首先介绍一下我们系统基本内容:...

James Ren的专栏 1973

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【亲测免费】 Vue-charts:基于Vue2.0的ChartJs图表封装库

Vue-charts:基于Vue2.0的ChartJs图表封装库 Vue-charts 是一个基于 Vue2.0 的图表库封装,它为开发者提供了一种简单的方式来集成和展示 ChartJs 图表。该项目主要使用 Vue.js 和 JavaScript 进行开发。 项目核心功能 图表类型多样:支持包括折线图、柱状图、饼图等多种常见图表类型。 数据绑定与自动渲染:通过 Vue 的数据绑定功能,图表能够...

gitblog_00890的博客 372

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【亲测免费】 Vue-FullCalendar:Vue.js 的日历组件

Vue-FullCalendar:Vue.js 的日历组件 Vue-FullCalendar 是一个为 Vue.js 设计的 FullCalendar 封装库。该项目主要使用 Vue.js 进行开发。 项目基础介绍 Vue-FullCalendar 是一个基于 Vue.js 的 FullCalendar 封装库,使得开发者能够在 Vue.js 应用中轻松地集成和使用的日历组件。它支持 FullCa...

gitblog_00057的博客 610

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

开源项目推荐:Trilogy

开源项目推荐:Trilogy 项目基础介绍和主要编程语言 Trilogy 是一个基于 TypeScript 的 SQLite 数据库层封装库。它支持原生 C++ 和纯 JavaScript 驱动,旨在为开发者提供一个简单、清晰的 API 来与 SQLite 数据库进行交互。Trilogy 的设计灵感来源于 Mongoose,但并不试图成为一个 ORM,而是专注于提供高效的 SQLite 操作接口。...

gitblog_00630的博客 834

Express.js 3.0 发布,Node.js 的高性能封装

Express.js 3.0 发布,这是一个完全改进的版本,详细的改进记录与版本间的比较请看发行说明。 Express.js 是对 Node.js 的一个高性能的封装,示例代码: require('express') get('/', function(){ this.contentType('html') return '' }) run()...

weixin_34357436的博客 69

封装一个postMessage库,进行iframe跨域交互

这是近期个人在开发chrome插件时的其中一个小总结。还有很多没有总结出来。因为目前插件还在迭代中,(herry菌插件,用于B站C站),属于个人业余的一个小项目。还有很多功能没有实现,以及还需要再看能加上什么功能。 封装的postMessage库herryPostMessage.js (function (w) { //herry对象 w.herry = {}; //iframe的id if(!herry.iframeId) { herry.iframeId = 'ifra...

nidongla的博客 451

开源项目推荐:Path-Match

开源项目推荐:Path-Match 1. 项目基础介绍及主要编程语言 Path-Match 是一个基于 JavaScript 编写的开源项目,它为开发者提供了一个简洁的路径匹配工具。这个项目是对 path-to-regexp 库的轻量级封装,使得从路径中提取参数名更加方便。Path-Match 适用于需要处理路由匹配逻辑的场景,尤其在与 Express.js 等服务器端 JavaScript 框架...

gitblog_00170的博客 472

前端mqtt封装

mqtt封装 promise

qq1248409755的博客 1376

RTSP-FFmpeg: 将RTSP视频流转换为MotionJPEG的Node.js封装库

RTSP-FFmpeg: 将RTSP视频流转换为MotionJPEG的Node.js封装库 1. 项目基础介绍及编程语言 RTSP-FFmpeg 是一个使用 Node.js 编写的开源项目。它主要作为一个FFmpeg的封装库,允许开发者方便地将RTSP视频流转换为MotionJPEG格式。项目使用 JavaScript 作为主要的编程语言,依赖于 Node.js 环境。 2. 核心功能 该项目的核...

gitblog_00918的博客 355

尚品汇商城项目 关于AXIOS二次封装

Ajax(Asynchronous JavaScript and XML)是一种用于创建异步Web应用的技术,它通过在交换数据,实现了。Axios是,不仅可以,还可以。Axios提供了比传统Ajax更丰富、更强大的功能,如,同时,Axios还具有更好的错误处理机制和更方便的API。

cybil101的博客 1836

基于 Delphi 的前后端分离:之五,使用 HTMX 让页面元素组件化之面向对象的Delphi代码封装

用 Delphi 的类封装前端图表组件

pcplayer的博客 1450

jskey库

jskey库所有代码和例子遵循LGPL协议,将永久性提供无偿服务。 支持新生代ie、支持firefox、支持中生代和古生代ie(不支持元古代[5.5]和太古代[ie5及以前]);封装了:常用JS操作(复选框、单选框、下拉框)、日历控件、js表单验证;整个文件解压放至您项目的任意目录,不要移动其文件结构,它们具有完整的依赖体系;demo目录里有js库(jskey_core)中提供的部分功能例子,其...

一辈子的守候 145

V-Mapbox:Vue 与 Mapbox GL JS 的完美结合

V-Mapbox:Vue 与 Mapbox GL JS 的完美结合 V-Mapbox 是一个开源项目,旨在为 Vue.js 提供与 Mapbox GL JS (v3.x) 和 Maplibre GL (v4.x) 地图库交互的 Vue 式方法。该项目主要使用 Vue.js (77%)、TypeScript (17%) 和 JavaScript (5%) 编程语言。 核心功能 V-Mapbox 的核...

gitblog_01045的博客 447
上一篇: Js库的封装
下一篇: JS库封装改进的简化
王哈哈.
博客等级 码龄8年 13粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值