用js面向对象思想封装插件
2024-10-17 04:23:18
js是基于原型的面向对象语言,如果你学过java,c#等正统面向对象语言,你会难以理解js的面向对象,他和普通的面向对象不太一样,今天,我们通过封装一个toast插件,来看看js面向对象是如何运行的。
html
<div id="toast"></div>
css
* {
margin:;
padding:;
} #toast {
position: absolute;
display: none;
left: 50%;
top: 50%;
z-index:;
margin: 0 auto;
-webkit-transform: translate(-50%);
transform: translate(-50%);
width: 50%;
padding: 5px;
border-radius: 5px;
text-align: center;
color: #fff;
background-color: #000;
}
使用方法
var toast = new Toast("toast", "你好,对话框");
toast.show();
js核心代码
(function() {
/***
* 信息提示组件Toast v1.0
* @param {Object} container 内容容器(必填)
* @param {Object} content 文字内容(可选)
* @param {Object} duration 显示时长(可选)
* 使用方法
* var toast = new Toast("toast", "你好,对话框");
* toast.show();(支持回调函数)
*/
function Toast(container, content, duration) {
this.container = document.getElementById(container);
this.content = content || "这是一段对话";
this.duration = duration || 2000;
} Toast.prototype.show = function(callback) {
this.callback = callback || function() {};
this.container.style.opacity = 1;
this.container.style.display = "block";
this.container.innerHTML = this.content; setTimeout(function() {
this.callback && this.callback();
this.hide();
}.bind(this), this.duration); return this;
} Toast.prototype.hide = function(callback) {
this.callback = callback || function() {}; this.container.style.display = "none";
this.callback && this.callback();
return this;
} window.Toast = Toast; })(window);
Toas函数是一个构造函数,相当于面向对象语言中的类(class),并且有形参,函数内部代码相当于给成员变量赋值。通常在这里初始化成员变量,这就好理解了。接下里的show,hide方法都是在Toast上的原型上添加共有的方法,对应的是修饰词为public的一个成员方法。函数最后都会返回this(当前函数执行的上下文),是为了可以进行链式调用。这些方法都支持回调函数,当函数执行完毕后会执行传入的回调函数,这在编写插件的时候通常都会用到,比如说ajax请求完成后,你得到返回的数据,并且需要后续操作,这时就要用回调函数。因为代码都放在闭包环境下,外界访问不了里面的变量和方法,所以把Toast强行暴露出去,就可以在window访问到。
最新文章
- 【Android】NavigationView头部点击监听事件
- rosetta2014/2015安装时出现INCLUDE(keyerror)错误,解决。
- 税收基础知识 >; 三税(营业税, 增值税, 所得税) + 关税
- Oracle Profile 使用
- 3-cd 命令总结
- ch2-4:遇到嵌套列表进行缩进打印
- Poj/OpenJudge 1042 Gone Fishing
- RAW模板命名规范
- RNN的介绍
- Python距离放弃又近了Day02
- 谓词逻辑 p->;q 的真假
- RabbitMQ基础知识详解
- Centos 7 下 Zabbix 3.4.x 服务搭建
- 解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]
- SQLServer中获取所有数据库名、所有表名、所有字段名的SQL语句
- 1-2Html与CSS的关系
- 解决MAC下ctags -R无效的问题
- windows下gitlab配置 生成ssh key
- bzoj 1798 双标记区间修改线段树
- sql server2008 跨服务器之间复制表数据
热门文章
- Corosync+Pacemaker+crmsh构建Web高可用集群
- Linux内核分析实验二:mykernel实验指导(操作系统是如何工作的)
- nginx 配置 phpmyadmin
- Java之Junit和反射
- Java入门系列:处理Json格式数据
- numpy二进制转换和范围缩放
- Kafka 0.8 Producer处理逻辑
- windows查找端口占用/ 终结端口占用 ------------windows小技巧
- Java并发编程原理与实战二十一:线程通信wait&;notify&;join
- 推荐一些我所用的firefox 附加组件。