$.noConflict()方法實現防衝突原理介紹
大家都知道使用$.noConflict()方法可以防止和其他的js類庫出現衝突的情況。
關於此方法的基本用法可以參閱jQuery.noConflict()方法一章節。
下面就就介紹一下它是如何實現防止衝突的原理,希望能夠給需要的朋友帶來一定的幫助。
如果其他js類庫也是用$或者jQuery那麼就會導致衝突,比如現在的prototype.js也是使用$的。
看jQuery原始碼(1.83版本)的開頭的宣告:
[JavaScript] 純文字檢視 複製程式碼// Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$,
這個地方是一個很好的技巧,如果其他的類庫也是用jQuery或者$,那麼就將其暫存在區域性變數_jQuery和_$中,這樣就防止被覆蓋。
[JavaScript] 純文字檢視 複製程式碼noConflict: function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }
上面的程式碼就是noConflict()方法的實現原始碼,下面做一下介紹。
當此方法沒有引數時候,就將_$賦值給window.$,這樣的話就將$的控制權讓渡給上一個js庫。
如果具有deep引數為true的時候,那麼連_jQuery賦值給window.jQuery,這樣的話就將jQuery的控制權讓渡給上一個庫。
也就是說當前jQuery庫已經不再能使用$或者$和jQuery都不能用。
相關文章
- 簡單介紹Lombok使用@Tolerate實現衝突相容問題Lombok
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- golang實現常用集合原理介紹Golang
- 簡單介紹numpy實現RNN原理實現RNN
- rxjs Observable filter Operator 的實現原理介紹JSFilter
- Flink sql實現原理及Apache Calcite介紹SQLApache
- underscore 系列之防衝突與 Utility FunctionsFunction
- 簡單介紹NMS的實現方法
- hash衝突解決方法
- 如何克服解決Git衝突的恐懼症?(Git入門介紹)Git
- Manjaro更新出現衝突JAR
- css命名衝突解決方法CSS
- 單目測距的基本介紹和實現原理
- tornado原理介紹及非同步非阻塞實現方式非同步
- Angular InjectionToken APP_INITIALIZER 的實現方法介紹AngularAPP
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現
- Angular 依賴注入機制實現原理的深入介紹Angular依賴注入
- 推薦模型NeuralCF:原理介紹與TensorFlow2.0實現模型
- 推薦模型DeepCrossing: 原理介紹與TensorFlow2.0實現模型ROS
- Kafka的原理介紹及實踐Kafka
- 海康安防產品-[監控]影片監控原理介紹
- SAP UI5和Angular的函式防抖(Debounce)和函式節流(Throttle)實現原理介紹UIAngular函式
- FFmpeg原理介紹
- Docker容器實現原理及容器隔離性踩坑介紹Docker
- 簡單易懂的 Go 泛型使用和實現原理介紹Go泛型
- 依賴衝突時的解決方法
- maven依賴衝突以及解決方法Maven
- 防抖原理以及簡單實現
- Android View 滑動衝突解決方式以及原理AndroidView
- 基於FPGA的乘法器原理介紹及設計實現FPGA
- Oracle DRM原理介紹Oracle
- elastic search 原理介紹AST
- Async Commit 原理介紹MIT
- 解決預設方法衝突的規則
- hash解決衝突的方法優缺點
- 防盜鏈的實現方法
- 新書介紹 -- 《Redis核心原理與實踐》新書Redis
- Linux單裝置多路USB串列埠的實現方法介紹Linux串列埠
- win10系統與games for windows live出現衝突處理方法Win10GAMWindows