$.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都不能用。
相關文章
- jQuery.noConflict()實現防衝突原理機制簡單介紹jQuery
- 談談 jQuery 中的防衝突(noConflict)機制jQuery
- 簡單介紹Lombok使用@Tolerate實現衝突相容問題Lombok
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- golang實現常用集合原理介紹Golang
- 簡單介紹numpy實現RNN原理實現RNN
- 個推技術實現原理介紹
- underscore 系列之防衝突與 Utility FunctionsFunction
- Python greenlet使用介紹及實現原理Python
- Manjaro更新出現衝突JAR
- 出現型別衝突型別
- 簡單介紹NMS的實現方法
- css命名衝突解決方法CSS
- Flink sql實現原理及Apache Calcite介紹SQLApache
- rxjs Observable filter Operator 的實現原理介紹JSFilter
- 如何克服解決Git衝突的恐懼症?(Git入門介紹)Git
- Lombok介紹,使用方法及原理Lombok
- PHP中的trait方法衝突PHPAI
- 衝突處理的方法(轉載)
- slf4j介紹以及實現原理窺探
- 單目測距的基本介紹和實現原理
- svn檔案衝突,樹衝突詳解
- Angular InjectionToken APP_INITIALIZER 的實現方法介紹AngularAPP
- Angular 依賴注入機制實現原理的深入介紹Angular依賴注入
- tornado原理介紹及非同步非阻塞實現方式非同步
- maven依賴衝突以及解決方法Maven
- 依賴衝突時的解決方法
- Kafka的原理介紹及實踐Kafka
- SAP UI5和Angular的函式防抖(Debounce)和函式節流(Throttle)實現原理介紹UIAngular函式
- 防抖原理以及簡單實現
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現
- 實現跨域iframe介面方法呼叫 簡單介紹跨域
- Docker容器實現原理及容器隔離性踩坑介紹Docker
- 簡單易懂的 Go 泛型使用和實現原理介紹Go泛型
- 推薦模型NeuralCF:原理介紹與TensorFlow2.0實現模型
- 快速傅立葉變換原理介紹及遞迴程式碼實現遞迴
- 解決預設方法衝突的規則
- hash解決衝突的方法優缺點