javaScript中封装的各种写法示例(推荐)
发布时间 - 2026-01-11 02:08:54 点击率:次前言

在javascript的世界里,写法是个神奇的现象,真是百家齐开放啊!每次看到老外写的js组件,思想和写法都怪异,就没看到一个js结构基本相同的代码出来。今天,我就来谈谈js写法,我在开发过程中,也写了几种。对于性能方面,如果代码结构或逻辑写的不好,会造成计算机CPU的运算加大,运行性能降低,js的写法对性能的影响也是至关重要的。
通常写js组件开发的,都会用到匿名函数的写法去封装一个对象,与外界形成一个闭包的作用域。(这里对于js的继承,多态,我就不多说了,高级程序员应该具备这些知识,如果您也做过java开发,这个概念太熟悉了。 )
主要对封装进行研究,因为前后台都会涉及到面向对象的概念,对于封装,怎么封装,封装的性能,等等很重要概念。封装(在程序世界是第一概念,我个人认为),全天下漫天遍野的封装,JQuery,EXT和Prototype.js封装的是javascript,jQuery uI和jQuery mobile封装着jQuery,java中的JDBC在spirng,Hibernate等框架封装着,在这里列举几个例子,还有很多种不一一介绍。
回到主题javaScript封装写法,先来看看一个简单的
function hello(){
var a = 'hello';
alert(a);
}
js函数是最原始,最基础的封装,懂js一目了然,如果你的页面不需要很多js交互操作,就可以用这种简单的方式,如果你喜欢用JQuery,则需要写成这样
$(function(){
$('#id').click(function(){
alert('hello');
})
});
如果用Node.js则比较复杂点,因为要Node.js要加载一个HTTP模块,写法如下
var http = require('http');
http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<p>hello</p>');
}).listen(8080);
再深层次封装写法,如果遇到大量使用js操作,单凭每个小的函数无法满足,因为它们存在一个公共的域中,写法多而散很容易造成了很多bug因素,需要规整。js创造者给我们提供了一个叫匿名函数,顾名思义,匿名函数就是没有实际名字的函数,它的格式很多种, !function(){}() , (function(){})() , (function(){}()) , new function(){} , void function(){}(); JQuery.js就是一个匿名函数封装,先看最常用的
(function(){
star.init = (function(name){
var e = new Editor(name, Data.toolbarData);
});
})();
如果开发一些js组件的时候,可以先创建一个对象,给这个对象属性和方法,让这个对象能够单独操作和可以和其他对象合作
var klm = klm || {};
klm = (function(){
//第一个写法
klm.init = function(){
alert('hello');
}
//第二个写法
klm.browser = (function(ua){
var b = {
msie:/msie/.test(ua) && !/opera/.test(ua),
opera:/opera/.test(ua),
safari:/webkit/.test(ua) && !/chrome/.test(ua),
firefox:/firefox/.test(ua),
chrome:/chrome/.test(ua)
};
})(window.navigator.userAgent.toLowerCase());
//将其定义方法以接口方式返回给外界引用
return{
init: klm.init,
browser:klm.browser
}
})();
接下来这种js封装写法是我自己比较喜欢的
var myOpinion = myOpinion || {};
myOpinion.prototype={
init:function(obj,i){
alert('hello');
},
closeWindow:function(obj,d){
obj.click(function(){
d.hide();
});
}
}
$(function(){
var my = myOpinion.prototype;
my.init($(".z-sidebar li em"),$("#contact"));
$("#contact").add(my.closeWindow($(".z-sidebar li em"),$("#contact")));
});
这种方式先通过prototype继承方式把每一个小的操作封装成属性,init和closeWindow,然后可以进行初始化加载如my.init();也可以绑定到某个操作事件上如$("#contact").add(my.closeWindow());这些封装一气而成。
还有定义单个属性封装
WinShow.create = function(c,body){
var _head = '<div class="+ c.heacss +"><span class="+ c.concss +">' + c.title + '</span></div>';
this.container.innerHTML = _head;
return this.container;
this.container.onclick = function(e){
alert('hello');
}
}
在这里我创建一个create属性以匿名函数形式封装一段HTML代码,并给这个 HTML代码绑定点击事件。
列举以上几种js封装形式,但是小生还在研究中,这几种都能实现相同操作,可是写法有些区别,对于性能方面谁有更好的见解可以点评我,进行交流。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。
# javascript封装函数
# js封装方法
# js封装技巧
# JS类的封装及实现代码
# 把jQuery的类、插件封装成seajs的模块的方法
# 封装属于自己的JS组件
# 基于jquery封装的一个js分页
# 一个封装js代码-----展开收起效果示例
# 几种
# 我就
# 绑定
# 创建一个
# 装着
# 漫天遍野
# 的是
# 加载
# 几个
# 是个
# 在这里
# 我在
# 还在
# 第一个
# 在这
# 不需要
# 说了
# 如有
# 都能
# 可以用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理异常和错误?(Handler示例)
如何获取PHP WAP自助建站系统源码?
Linux安全能力提升路径_长期防护思维说明【指导】
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
高性价比服务器租赁——企业级配置与24小时运维服务
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel怎么上传文件_Laravel图片上传及存储配置
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
简单实现Android验证码
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
非常酷的网站设计制作软件,酷培ai教育官方网站?
在centOS 7安装mysql 5.7的详细教程
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何在Windows 2008云服务器安全搭建网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
php结合redis实现高并发下的抢购、秒杀功能的实例
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
三星网站视频制作教程下载,三星w23网页如何全屏?
HTML 中如何正确使用模板变量为元素的 name 属性赋值
郑州企业网站制作公司,郑州招聘网站有哪些?
Python进程池调度策略_任务分发说明【指导】
Android Socket接口实现即时通讯实例代码
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
香港服务器网站卡顿?如何解决网络延迟与负载问题?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
七夕网站制作视频,七夕大促活动怎么报名?
linux写shell需要注意的问题(必看)
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Laravel如何自定义分页视图?(Pagination示例)
网易LOFTER官网链接 老福特网页版登录地址
如何基于云服务器快速搭建个人网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
利用python获取某年中每个月的第一天和最后一天
香港服务器如何优化才能显著提升网站加载速度?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Java类加载基本过程详细介绍
Laravel如何处理文件下载请求?(Response示例)
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel模型事件有哪些_Laravel Model Event生命周期详解
JS去除重复并统计数量的实现方法
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析

