使用面向对象思想封装js(附实例)
平时在写js时应该用面向对象思想将每一组功能封装成一个模块,可实现模块间的高内聚低耦合、重用、结构清晰...........
如果页面中逻辑复杂、功能多,不使用模块封装是不可想象的,维护起来非常复杂。
举个栗子,比如页面中的登录弹窗:封装弹窗代码,外界代码订阅弹窗内的事件(登录、注册...)

function LoginBox() {
if (!(this instanceof LoginBox)) {
return new LoginBox();
}
var _this = this;
var _cache = {
$loginWindow: $("#box")
};
var _eventNames = ["loginSuccess", "registSuccess"];
var _events = { "loginSuccess": [], "registSuccess": [] };
//触发登录成功事件
var _onLoginSuccess = function () {
var funcs = _events["loginSuccess"];
for (var i = 0, len = funcs.length; i < len; i++) {
funcs[i].call(this, _returnUrl, _loginCallBack);
}
_this.hide();
};
//绑定事件
var _initEvents = function () {
$.bindEvent({
bindInfo: [
{ "#buttonLogin": "click buttonLoginClick" },
{ "#buttonReg": "click buttonRegClick" },
],
buttonLoginClick: function () {
//异步登录,登录成功调用
_onLoginSuccess();
},
buttonRegClick: function () {
//注册成功
_onLoginSuccess();
}
},
});
};
//外部添加事件
this.on = function (eventName, func) {
if (_eventNames.indexOf(eventName) > -1) {
_events[eventName].push(func);
}
};
this.show = function (returnUrl, guestReturnUrl, isShowGuest, loginCallBack) {
//显示登录弹窗逻辑....
};
this.hide = function () {
//隐藏登录弹窗逻辑...
};
$(function () {
_initEvents();
});
}
-----------------------------------------
外部调用:
var loginBox = new LoginBox();
loginBox.show();//显示登录弹窗
loginBox.hide();//隐藏登录弹窗
loginBox.on("loginSuccess", function () {
alert("登录成功啦");
});
loginBox.on("registSuccess", function () {
alert("注册成功啦");
});
使用面向对象思想封装js(附实例)的更多相关文章
- 原生JS面向对象思想封装轮播图组件
原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能 ...
- 用js面向对象思想封装插件
js是基于原型的面向对象语言,如果你学过java,c#等正统面向对象语言,你会难以理解js的面向对象,他和普通的面向对象不太一样,今天,我们通过封装一个toast插件,来看看js面向对象是如何运行的. ...
- 利用面向对象思想封装Konva动态进度条
1.html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 谈一谈原生JS中的【面向对象思想】
[重点提前说:面向对象的思想很重要!] 最近开始接触学习后台的PHP语言,在接触到PHP中的面向对象相关思想之后,突然想到之前曾接触的JS中的面向对象思想,无奈记性太差, ...
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...
- js 实现对ajax请求面向对象的封装
AJAX 是一种用于创建高速动态网页的技术.通过在后台与server进行少量数据交换.AJAX 能够使网页实现异步更新.这意味着能够在不又一次载入整个网页的情况下,对网页的某部分进行 ...
- JS 的实例和对象的区别
对于传统的OOP思想,JS的语法确实比较难搞,其中之一就是实例和对象的区别. 什么是实例? 实例是类的具体化产品. JS语法没有类这个概念(当然ES6引用了类这个概念).只能通过构造函数来创建类,例如 ...
- java 28 - 1 设计模式 之 面向对象思想设计原则和模版设计模式概述
在之前的java 23 中,了解过设计模式的单例模式和工厂模式.在这里,介绍下设计模式 面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设 ...
- 使用面向对象思想处理cookie
实例:使用面向对象思想处理cookie如果读者对cookie 不熟悉,可以在第七章学习它的使用方法,虽然在那里创建了几个通用函数用于cookie 的处理,但这些函数彼此分离,没有体现出是一个整体.联想 ...
随机推荐
- JAVA主动抛异常的几种方式及捕捉结果输出对比
测试代码: /** * 测试异常抛出及捕捉 */ @Test public void test() { try { this.testA(); } catch (Exception ex) { Sys ...
- 三大类sql语句——该记录是本人以前微博上的文章
一.DML语句二.DDL语句三.事务控制语句一.DML语句-Data Mulipulation LanguageDML语句数据操作野菊执行后会生成一个事务,事务需要提交才能够永久生效,在commit前 ...
- TCP连接的建立(三次握手和四次挥手)
写到最后发现我描述的挺水的,这个老哥的用语比较专业一点https://blog.csdn.net/qq_38950316/article/details/81087809 (老哥这篇有些许错别字 大 ...
- git 版本库之间的依赖 --submodule
自己做实验: 在github上建一个版本库B作为submoule: https://github.com/FrankKuiFang/testGit_submodule, 尝试将该版本库作为另一个库A ...
- Mysql 错误:Duplicate entry '0' for key 'PRIMARY'
[1]添加数据报错:Duplicate entry '0' for key 'PRIMARY' (1)问题现象 SQL 语句如下: DROP TABLE test_distinct; CREATE T ...
- 图解微信小程序---轮播图
图解微信小程序---轮播图 代码笔记 第一步:在页面创建swiper组件 第二步:编写js页面 注意事项:wx:for渲染我们js中的图片数组,item默认写法,获取我们的图片数组中的图片,可通过增加 ...
- PHP 垃圾回收机制详解
前言:之前对PHP的GC只是了解了个大概,这次详细了解下PHP的垃圾回收机制(GC). 介于网上大部分都是PHP5.X的GC,虽然 php5 到 php7 GC部分做出的改动较小,但我觉得还是一起写下 ...
- 'while' statement cannot complete without throwing an exception
You are probably using Android Studio or IntelliJ. If so, you can add this above your method contain ...
- WIN10 报错 "此共享需要过时的SMB1协议,而此协议是不安全"的解决方法
发现新安装的win10能看到其他计算机,但不能共享其他计算的共享文件/夹,出现如下情况:在浏览器里输入:\IP 不能访问到计算机的共享文件夹,或者在桌面上新建一个指向到其他计算机共享文件/夹的快捷方式 ...
- 常用SQL语句分享
前言: 日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多.笔者在工作及学习过程中也整理了下个人常用的SQL,现在分享给你!可能有些S ...