JQ的原理
jquery-1.xxx :專門為PC端誕生的類庫,兼容所有的瀏覽器
jquery-2.xxx:當初是為了移動端而准備的,所以IE低版本瀏覽器一般不兼容,但是這個版本針對移動端的事件等操作也不是特別的完善,被Zepto這個類庫取代了
jquery-3.xxx:自己回去擴展一下,看看新增加或者修改了哪些方法
1、jQuery充分利用了JS中函數的三種特性:普通函數、類、普通對象;jQuery就是這個類;

JQ原理:
JQ本身就是一個類,在外面使用的$和jQuery是同一個東西,JQ中提供的方法分為兩部分:
- 寫在jQuery原型上的方法,專門給JQ的實例使用
- 寫在jQuery私有屬性上的,通過$.xxx可以獲取進行操作等 jQuery() / $() =>創建JQ的實例,需要傳遞兩個參數,第一個參數一般是選擇器內容;第二個參數是獲取的上下文,如果不傳遞默認是document;==>“此操作通俗的叫法:通過JQ選擇器獲取元素”
- 返回結果是一個類數組(它也是JQ的實例),這個類數組是JQ自己去創建的,里面有一些自己特定的屬性:length/context/selector/prevObject…
- 獲取到的結果我們叫做JQ對象(JQ實例),可以調取JQ原型上提供的方法,但是它不是原生的JS對象,不能調取瀏覽器提供的默認屬性方法,當然原生JS也不能調用JQ上提供的屬性方法;

extend:在JQ的私有屬性上和它的原型上都有這個方法,但是指向的都是同一個方法:jQuery.extend = jQuery.fn.extend = function(){}
$.extend()
$.fn.extend()
雖然執行的是同一個方法,但是方法中的THIS是不一樣的,EXTEND是向現有的方法庫中擴展方法的意思,不同的執行方式擴展的位置不一樣
