JavaScript常见封装方法
1.最简单的,使用变量,然后用匿名函数包裹,不封装
2.对象字面量简单封装(不完整的模块模式,因为无法达到变量、方法私有效果。不过确实有分离和组织代码的能力,也就算一种简略的模块模式的实现方式)
var Carousel = {
init: function(){...},
bind: function(){...},
showPre: function(){...},
showNext: function(){...}
};
3.原型构造器模式封装
function Carousel(){
this.init();
}
Carousel.prototype = {
init: function(){...},
bind: function(){...},
showPre: function(){...},
showNext: function(){...}
};
4.模块模式与原型构造器模式绑定多个:使用一个数组保存实例
var CarouselCenter = (function(){
var carouselList = [];
function init($carousel){
$carousel.each(function(){
var $cal = $(this);
if($cal.hasClass('init')){
return;
}
carouselList.push( new Carousel($cal) );
$cal.addClass('init')
});
}
function getList(){
return carouselList;
}
function Carousel($carousel){
}
Carousel.prototype = {
bind: function(){
var _this = this;
this.$pre.on('click', function(){
_this.showPre();
});
this.$next.on('click', function(){
_this.showNext();
});
},
showPre: function(){
this.$ct.prepend(this.$ct.children().last());
this.$ct.css('left', 0-this.imgWidth);
this.$ct.animate({'left': 0});
},
showNext: function(){
var $ct = this.$ct;
$ct.animate({'left': 0-this.imgWidth},function(){
$ct.append($ct.children().first());
$ct.css('left', 0);
});
}
};
return {
init: init,
getList: getList
}
})();
// 调用
// CarouselCenter.init($('#c1'))
// CarouselCenter.init($('#c2'))
// CarouselCenter.init($('#c2')) //不会重复绑定
// CarouselCenter.init($('.carousel'))
5.通用写法
(function(window,$){
function Carousel(){
};
Carousel.prototype = {
};
window.Carousel = Carousel;
})(window,jQuery)
ps:
模式目的:编写易于维护的代码,其中一个最重要方面是能够找到代码中重复出现的主题并优化它们。
JavaScript常见封装方法的更多相关文章
- vue-axios的总结及项目中的常见封装方法。
前言 我们知道 vue 2.0版本开始推荐使用 axios 来完成前端 ajax 请求,axios 是一个基于Promise 的 http 库,可以用在浏览器和 node.js 中,axios 成为v ...
- 如何打造属于自己的Javascript武器库(封装方法)
前言 代码写的久了,就会发现很多时候都是在写一些重复的东西,这个时候就应该要考虑到提高工作效率了,比如对常用方法的封装,例如日期格式化,浏览器类型判断等. 今天这篇文章我们就来看看如何封装常用的Jav ...
- JavaScript常见调试方法
编辑导语:javascript调试方法,常见使用alert和console来定位出错和输出的结果是否是想要的,在chrome中,还可以使用断点来看运行的情况等,本文介绍了比较全面的调试方法,你知道co ...
- Javascript 封装方法
基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...
- 分享几个Javascript 封装方法
基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...
- javascript常见的20个问题与解决方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javascript常见方法汇总之一——数组字符串相关
(转载至慕课网) 原文链接:https://www.imooc.com/article/46933 github地址:https://github.com/dorseysen/notes-about- ...
- javascript常见的数组方法
1:Array对象用于在单个变量中存储多个值typeof(arrArr) 'object'var arr1 = [];//创建一个空数组eg:数组是个引用类型var a = [1,2,3];var b ...
- JavaScript使用封装
基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...
随机推荐
- MySQL数据库学习: 01 —— 数据库的概述
壹 概述 一 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件). 易混淆:人们常常用“数据库”这个词语来代表他们使 ...
- Effective Java 第三版——17. 最小化可变性
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Hibernate中关于HQL查询返回List<Object>数据的结果集问题
---恢复内容开始--- 开发中遇到的一个小问题,使用Hibernate中的HQL查询时,使用query.list()查询出来的是一个List<Object>结果集 原来代码: publi ...
- cassandra的gc调优
我们用的是cassandra3.7官方的docker镜像,在生产环境发现有一个小时一次停顿的现象.我猜测是java gc的原因,于是看了cassandra的gc日志,果然发现有每小时长达300ms-2 ...
- python3之xml&ConfigParser&hashlib&Subprocess&logging模块
1.xml模块 XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. XML 被设计用来传输和存储 ...
- c# winform 视频转字符动画
以上是大图展示, 原理比较简单,附件下载带了一个分辨率比较小的txt动画. 音乐删除了music.mp3, 如果需要自己下载一首歌曲,然后放在根目录名称“music.mp3”就可以了. 附件点我 ...
- [转载]CentOS 7安装Gnome GUI 图形界面
原文链接:http://www.centoscn.com/image-text/config/2015/0528/5552.html 当你安装centos服务器版本的时候,系统默认是不会安装 Cent ...
- Spring框架入门之开发环境搭建(MyEclipse2017平台)
基于MyEclipse2017平台搭建Spring开发环境,这里MyEclipse已将Spring集成好了,我们只需要做一简单配置即可 一.环境配置 OS:Windows7 64位 IDE工具:MyE ...
- vue单页面打包文件大?首次加载慢?按需加载?是你打开方式不对
部署各vue项目,走了一遍坑.... vue单页面应用刷新404 找到nginx多网站配置文件:类似nginx/sites-available/www.baidu.com server { liste ...
- vue的组件小操作
项目技术: webpack + vue + element + axois (vue-resource) + less-loader+ ... vue的操作的方法案例: 1.数组数据还未获取到,做出预 ...