最近一直在学习javaScrpit插件制作,前几天学习制作了一个插件但存在严重缺陷.

javaScrpit插件写法多种多样通过这几天的学习终于找到了适合自己的方法.前几天的缺陷也得到了解决.下面我们用最简单的个弹窗来说一下插件制作方法的思想

JS

首先

一  把代码放到匿名函数中避免与全局变量发生混合.

    !(function(window) {
function Mask(options) { } window.Mask = Mask;//把插件挂载到window上方便外面调用
})(window)

二  在构造函数里面设置一个对象用来管理传入的参数以及设置默认值

        !(function(window) {
function Mask(options) { this.options = {
id: "",
showBtn: "",
closeBtn: ""
}
//判断传入的参数是否是对象是的话循环此参数微this.options赋值,不是的话对this.options.id赋值 if(options instanceof Object) {
for(var i in options) { //根据传入的参数,修改默认参数值
this.options[i] = options[i];
}
} else {
this.options.id = options;
} } window.Mask = Mask;
})(window)

三 在原型上添加所有实例的公有方法,这样可以减少资源浪费

            !(function(window) {
function Mask(options) { this.options = {
id: "",
showBtn: "",
closeBtn: ""
}
this.show();//调用原型上设置的方法
this.hide();
} Mask.prototype = {
/**版本号**/
version: '1.0.0', show: function() {
var maskId = document.getElementById(this.options.id);
var showBtn = document.getElementById(this.options.showBtn);
showBtn.onclick = function() {
maskId.style.display = "block"
}
},
hide: function() {
var maskId = document.getElementById(this.options.id);
var closeBtn = document.getElementById(this.options.closeBtn);
closeBtn.onclick = function() {
maskId.style.display = "none"
}
}
}
window.Mask = Mask;
})(window)

完整代码(第三步优化后)

!(function(window) {
function Mask(options) { this.options = {
id: "",
showBtn: "",
closeBtn: ""
}
//判断传入的参数是否是对象是的话循环此参数微this.options赋值,不是的话对this.options.id赋值
if(options instanceof Object) {
for(var i in options) { //根据传入的参数,修改默认参数值
this.options[i] = options[i];
}
} else {
this.options.id = options;
} var maskId = document.getElementById(this.options.id);//弹出框id
var showBtn = document.getElementById(this.options.showBtn);//显示按钮
var closeBtn = document.getElementById(this.options.closeBtn);;//关闭按钮
this.show(maskId, showBtn);
this.hide(maskId, closeBtn);
} Mask.prototype = {
/**版本号**/
version: '1.0.0', show: function(maskId,showBtn) { showBtn.onclick = function() {
maskId.style.display = "block"
}
},
hide: function(maskId,closeBtn) { closeBtn.onclick = function() {
maskId.style.display = "none"
}
}
}
window.Mask = Mask;
})(window)

调用

new Mask({
id: "warp",//弹出框ID
showBtn: "showBtn",//显示按钮
closeBtn: "closeBtn"//隐藏按钮
});

到此插件制作就完成了

javaScrpit插件学习制作的更多相关文章

  1. emmet插件学习,练习中遇到一些问题

    emmet插件学习:帮助提高敲代码效率的插件 参考文献:Emmet(Zen coding)HTML代码使用技巧七则http://www.wzsky.net/html/Website/htmlcss/1 ...

  2. JQuery实用技巧--学会你也是大神(1)——插件的制作技巧

      前  言 JRedu 学习之前,首先我们需要知道什么是JQuery? JQuery是一个优秀的javascript框架. JQuery是继Prototype之后又一个优秀的Javascript框架 ...

  3. uexQQ插件学习心得

    uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...

  4. bootstrap插件学习

    转自http://v3.bootcss.com/javascript/ bootstrap javascript插件学习 模态框 打开模态框 <button type="button& ...

  5. Jquery插件学习

    前端开发也工作了一段时间,Jquery代码页写了很多,但是都是些的很零散的,不是很好用,网上看了很多人写的Jquery 很好用,而且到每个项目中都可以使用, 本人就感觉很好奇他们是怎么做到的呢,于是自 ...

  6. bootstrap插件学习-bootstrap.dropdown.js

    bootstrap插件学习-bootstrap.dropdown.js 先看bootstrap.dropdown.js的结构 var toggle = '[data-toggle="drop ...

  7. bootstrap插件学习-bootstrap.modal.js

    bootstrap插件学习-bootstrap.modal.js 先从bootstrap.modal.js的结构看起. function($){ var Modal = function(){} // ...

  8. DTCMS插件的制作实例电子资源管理(四)URL重写

    总目录 插件目录结构(一) Admin后台页面编写(二) 前台模板页编写(三) URL重写(四) 本实例旨在以一个实际的项目中的例子来介绍如何在dtcms中制作插件,本系列文章非入门教程,部分逻辑实现 ...

  9. 40款非常棒的 jQuery 插件和制作教程(系列一)

    jQuery 在现在的 Web 开发项目中扮演着重要角色,jQuery 让网站有更好的可用性和用户体验,让访问者对网站留下非常好的印象.jQuery以其插件众多.独特.轻量以及支持大规模的网站开发闻名 ...

随机推荐

  1. c语言:<tchar.h>

    头文件“<tchar.h>”作用就是为了进行ASCII码和UNICODE(wide-character)码的头文件(该头文件由微软提供): 这样我们就可以使用TCHAR.H头文件中的定义的 ...

  2. Sentinel基本使用--基于QPS流量控制(二), 采用Warm Up预热/冷启动方式控制突增流量

    Sentinel基本使用--基于QPS流量控制(二), 采用Warm Up预热/冷启动方式控制突增流量 2019年02月18日 23:52:37 xiongxianze 阅读数 398更多 分类专栏: ...

  3. php和java语法区别

    Java和PHP的基本语法基本相同,其实大部分的语言的基本语法也都相同,但是他们还是有一些细微的区别: 1.PHP是一种脚本语言,代码在服务器上执行,而结果以纯文本返回浏览器. 2.PHP能够运行在各 ...

  4. RSA 加密长度计算公式

    The length of data that can be encrypted using RSA is determined primarily by the size of the key yo ...

  5. luogu P2605 [ZJOI2010]基站选址

    luogu 先考虑朴素dp,设\(f_{i,j}\)表示在第\(i\)个村庄放了基站,一共放了\(j\)次,且只考虑前面村庄影响的答案.这里可以把\(j\)放在外面枚举,然后从\(f_{k,j-1}( ...

  6. luogu P3620 [APIO/CTSC 2007]数据备份

    luogu 首先如果一条线不是了连接的相邻两个位置一定不优,把它拆成若干连接相邻位置的线.所以现在问题是有\(n\)个物品,选\(k\)个,要求选的位置不能相邻,求最小总和 如果没有选的位置不能相邻这 ...

  7. Redis从入门到高可用,分布式实践

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  8. vue-时间插件,效果见图

    <template> <div class="select-time-wrapper"> <h5 class="titie"> ...

  9. java在遍历列表的时候删除列表中某个元素

    在遍历list的时候需要删除其中的某些元素,不要用foreach遍历,需要用Iterator. List<String> list = new ArrayList<String> ...

  10. Object.keys()返回对象自身可枚举属性组成的数组

    Object.keys()方法是对一个对象的key遍历,会把key组成一个数组返回 示例: // 参数为数组时,返回的是数组的索引 let arr1 = [1, 2, '3'] console.log ...