zoukankan      html  css  js  c++  java
  • javaScrpit插件学习制作

    最近一直在学习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"//隐藏按钮
        });

    到此插件制作就完成了

  • 相关阅读:
    七牛云上传图片
    找到当前字符串中最后一个/并获取之后的字符串
    jquery正则表达式验证:验证身份证号码
    apply()与call()的区别
    js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
    改变父元素的透明度,不影响子元素的透明度—css
    c实现生产者消费者问题。 windows下。
    python基础练习 dict切片
    html+css test1
    codewars[7]-python Friend or Foe?
  • 原文地址:https://www.cnblogs.com/zimengxiyu/p/9814889.html
Copyright © 2011-2022 走看看