jquery閉包應用
阿新 • • 發佈:2021-07-15
//jquery閉包應用
letparams1=typeofwindow!==undefined?window:this;
letparams2=function(window,noGlobal){
//瀏覽器環境window->windownoGlobal->undetined
//Node環境window->thisnoGlobal->true
//...jquery核心程式碼
varJquery=function(selector,context){
//...
}
//為了防止暴露到全域性的jQuery和$和全域性下現有的內容衝突,可以提供$等使用權的轉讓 var_Jquery=windwo.jQuery, _$=window.$;
jQuery.noConflict=functionnoConflict(deep){ if(window.$===Jquery){ window.$=_$ } if(deep&&window.jQuery===jQuery){ window.jQuery=_Jquery }
returnjQuery }
//瀏覽器環境下基於window.xxx=xxx的方式,把jquery暴露到全域性 //jquery()或者$()都是把內部私有的Jquery執行 if(typeofnoGlobal==="undefined"){ window.Jquery=window.$=jQuery } returnJquery } (function(global,factory){ //瀏覽器環境:global->windowNode環境global->當前module //factory回撥函式 "usestrict"; if(typeofmodule==="object"&&typeofmodule.exports==="object"){ //支援CommonJs模組規範的環境:Node環境 //params2(this,true) module.exports=global.document?factory(global,true): function(w){ if(!w.document){ thrownewError("Jqueryrequiresawindowwhithadocument") } returnfactory(w) }; }else{ //瀏覽器環境(不支援持CommonJs模組規範) //params2(window) factory(global) }
})(params1,params2) 我是Eric,手機號是13522679763
//為了防止暴露到全域性的jQuery和$和全域性下現有的內容衝突,可以提供$等使用權的轉讓 var_Jquery=windwo.jQuery, _$=window.$;
jQuery.noConflict=functionnoConflict(deep){ if(window.$===Jquery){ window.$=_$ } if(deep&&window.jQuery===jQuery){ window.jQuery=_Jquery }
returnjQuery }
//瀏覽器環境下基於window.xxx=xxx的方式,把jquery暴露到全域性 //jquery()或者$()都是把內部私有的Jquery執行 if(typeofnoGlobal==="undefined"){ window.Jquery=window.$=jQuery } returnJquery } (function(global,factory){ //瀏覽器環境:global->windowNode環境global->當前module //factory回撥函式 "usestrict"; if(typeofmodule==="object"&&typeofmodule.exports==="object"){ //支援CommonJs模組規範的環境:Node環境 //params2(this,true) module.exports=global.document?factory(global,true): function(w){ if(!w.document){ thrownewError("Jqueryrequiresawindowwhithadocument") } returnfactory(w) }; }else{ //瀏覽器環境(不支援持CommonJs模組規範) //params2(window) factory(global) }
})(params1,params2) 我是Eric,手機號是13522679763