jquery闭包应用

    // jquery闭包应用
        let params1 = typeof window !== undefined ? window : this;
        let params2 = function(window,noGlobal){
            // 浏览器环境 window-> window noGlobal->undetined
            // Node环境 window-> this noGlobal-> true
            // ...jquery 核心代码
            var Jquery = function(selector,context){
                // ...
            }

            // 为了防止暴露到 全局的jQuery 和 $ 和全局下现有的 内容冲突 , 可以提供 $ 等使用权的转让
            var _Jquery = windwo.jQuery,
                _$ = window.$;

            jQuery.noConflict = function noConflict(deep){
                if(window.$ === Jquery){
                    window.$ = _$
                } 
                if(deep && window.jQuery === jQuery){
                    window.jQuery = _Jquery
                }

                return jQuery
            }

            // 浏览器环境下 基于 window.xxx = xxx 的方式, 把jquery 暴露到全局
            // jquery() 或者 $() 都是把 内部私有的 Jquery 执行
            if(typeof noGlobal === "undefined"){
                window.Jquery = window.$ = jQuery
            } 
            return Jquery
        }
 
        (function(global,factory){
            // 浏览器环境: global -> window  Node环境 global -> 当前module 
            // factory 回调函数
            "use strict";
            if(typeof module === "object" && typeof module.exports === "object"){
                // 支持 CommonJs 模块规范的环境: Node 环境 
                // params2(this, true)
                module.exports=  global.document ? factory(global,true) : 
                function(w){
                    if(!w.document){
                        throw new Error("Jquery requires a window whith a  document")
                    }
                    return factory(w)
                };
            }else{
                // 浏览器环境 (不支持 持 CommonJs 模块规范)
                // params2(window)
                factory(global)
            }

        })(params1,params2)
posted @ 2021-07-15 14:11  13522679763-任国强  阅读(37)  评论(0)    收藏  举报