简述jq的实现原理
簡述jq的實(shí)現(xiàn)原理
1. 沙箱:
- jq利用自執(zhí)行函數(shù),將所有的實(shí)現(xiàn)細(xì)節(jié)封裝在自執(zhí)行函數(shù)內(nèi),對外僅僅暴露jQuery和$符號:
2. 無new化
- 在jq中我們使用選擇器,是直接使用$(selector)的,但是其實(shí)他返回的是一個(gè)jq對象,其中掛載了很多jq方法。
當(dāng)我們傳入一個(gè)選擇器時(shí),會返回new jQuery.fn.init(selector, context);而當(dāng)我們傳入空選擇器時(shí),在init中會顯示返回this,此時(shí)this是指帶init,而init的prototype被賦值為jQuery.fn,因此就相當(dāng)于jQuery的實(shí)例。
- jQuery.fn.init.prototype = jQuery.fn = jQuery.prototype
- new jQuery.fn.init() 相當(dāng)于 new jQuery() ;
3. jq鏈?zhǔn)秸{(diào)用原理
- 每次函數(shù)執(zhí)行完的時(shí)候都會返回this,jq對象本身
4. $.extend與$.fn.extend區(qū)別
- .extend是擴(kuò)展一個(gè)類對象的方法,通常是用來拓展全局函數(shù),例如.extend是擴(kuò)展一個(gè)類對象的方法,通常是用來拓展全局函數(shù),例如.extend是擴(kuò)展一個(gè)類對象的方法,通常是用來拓展全局函數(shù),例如.ajax,$.jsonParse等方法。
- $.fn.extend是擴(kuò)展原型鏈里的方法,是給具體的實(shí)例對象來調(diào)用。
5. $.extend()深淺復(fù)制
- 淺復(fù)制:簡單的同名數(shù)據(jù)覆蓋。
- 深復(fù)制:比較非簡單類型數(shù)據(jù)內(nèi)部的數(shù)據(jù),相同覆蓋,不同添加
總結(jié)
- 上一篇: C语言算数运算符顺序
- 下一篇: 证明定理的方法归纳