javaScript封装的各种写法

发布时间 - 2026-01-11 02:47:12    点击率:

在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封装形式,但是小生还在研究中,这几种都能实现相同操作,可是写法有些区别,对于性能方面谁有更好的见解可以点评我,进行交流。


# js封装写法  # js  # 封装  # 原生js封装自定义滚动条  # PHP封装返回Ajax字符串和JSON数组的方法  # AngularJS封装指令方法详解  # weUI应用之JS常用信息提示弹层的封装  # angularjs封装bootstrap时间插件datetimepicker  # 封装属于自己的JS组件  # 封装好的javascript前端分页插件pagination  # 几种  # 我就  # 绑定  # 创建一个  # 装着  # 漫天遍野  # 的是  # 加载  # 几个  # 是个  # 在这里  # 我在  # 第一个  # 还在  # 在这  # 不需要  # 说了  # 都能  # 可以用  # 不多 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 米侠浏览器网页背景异常怎么办 米侠显示修复  QQ浏览器网页版登录入口 个人中心在线进入  Laravel如何使用Vite进行前端资源打包?(配置示例)  Python数据仓库与ETL构建实战_Airflow调度流程详解  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何用PHP快速搭建高效网站?分步指南  jQuery 常见小例汇总  如何快速建站并高效导出源代码?  如何用西部建站助手快速创建专业网站?  Windows Hello人脸识别突然无法使用  如何在IIS中新建站点并配置端口与物理路径?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  智能起名网站制作软件有哪些,制作logo的软件?  高性价比服务器租赁——企业级配置与24小时运维服务  原生JS获取元素集合的子元素宽度实例  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  网页设计与网站制作内容,怎样注册网站?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Linux安全能力提升路径_长期防护思维说明【指导】  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  晋江文学城电脑版官网 晋江文学城网页版直接进入  音乐网站服务器如何优化API响应速度?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  python中快速进行多个字符替换的方法小结  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  手机软键盘弹出时影响布局的解决方法  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  香港服务器部署网站为何提示未备案?  如何在景安云服务器上绑定域名并配置虚拟主机?  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  linux top下的 minerd 木马清除方法  详解jQuery停止动画——stop()方法的使用  Linux系统运维自动化项目教程_Ansible批量管理实战  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Python并发异常传播_错误处理解析【教程】