js插件通用写法

2019-07-05  本文已影响0人  迪迪妮粑粑

主要思想:
1.创建js对象 -- 混合使用构造函数和原型模式
2.闭包防止全局污染
代码

例子如下:没有具体实现什么,就写通用部分,备注应该够看了,函数体实现存在伪代码

;(function(window, document, undefined) {
    //这里的函数不会暴露给外界
    function hideFun(){
        return "函数不会暴露给外界";
    }
    
    // 创建一个构造函数
    function basicPlugin(params) {
        //默认参数
        this.options = {
            callBack: null
        }

        //调用原型的初始化函数
        this.init();
    }

    // 构造函数的原型对象,这里的函数会暴露给作用域实例化的对象
    basicPlugin.prototype = {
        // 初始化函数
        init: function() {
            this.doSomething();

            this.bindListeners();
        },
        doSomething: function() {
            var self = this;
            //函数的具体实现
            console.log("函数的具体实现");
        },
        bindListeners: function() {
            var self = this;
            // 添加各种监听
            
            console.log(hideFun())
            
            // 伪监听开始
                //触发回调函数
                if (self.options.callBack) {
                    self.options.callBack(inputValue);
                }
            // 伪监听结束
        }
    }
    
    //将插件暴露到作用域
    if (typeof module !== "undefined" && module.exports) {
        module.exports = basicPlugin;
    } else if (typeof define === "function" && define.amd) {
        define(function() {
            return basicPlugin;
        });
    } else {
        window.basicPlugin = basicPlugin;
    }

}(window, document))
上一篇 下一篇

猜你喜欢

热点阅读