jquery是每一個前端都會的基礎技能,衆所周知,jquery返回的是jquery實例方法,可是咱們彷佛是直接使用$就能夠獲取到jquery的方法啦,能夠在瀏覽器中判斷一下 window.$ 和window.jQuery,jQuery 之間的關係,就會發現他們之間是全等的;css
咱們通常調用實例大部分是經過new方法,可是jquery卻不是,而是直接調用,這是爲何呢
1. 建立實例方法:前端
(function(root){ var jQuery = function(){ console.log('建立實例啦') } root.jQuery = jQuery //這樣賦值就能夠調用啦 })(window)
2.返回時操做
可是如今頁面上調用jQuery仍然不能使用$調用,因而簡單修改代碼jquery
(function(root){ var jQuery = function(){ return new jQuery() } root.$ = root.jQuery = jQuery })(this)
這樣咱們就能夠不在外部調用new方法,由於jQuery在返回的時候就已經調用了new瀏覽器
在以前的操做下,咱們已經將new jQuery返回了出去,可是這樣是有問題的。咱們在jquery原型中定義一個init方法,並將init返回出去
1. 定義一個initthis
var jQuery = function(){ return new jQuery.prototype.init(); } jQuery.prototype = { init: function(){ } }
可是這樣咱們雖然解決了報錯問題,可是咱們如今沒法獲取到jQuery中的原型方法,也就沒法調用到jQuery的方法。
2. 原型共享
jQuery中有很重要的一行代碼:prototype
jQuery.prototype.init.prototype = jQuery.prototype
這就是原型共享,簡單從代碼來看,就是將jquery的原型賦值給jquery.prototype.init方法原型;
這樣咱們調用jquery時,雖然獲取的是init方法,可是依然能夠調用jquery中的原型方法。
3. 例子
咱們在jquery上簡單擴展方法,並打印jquery驗證code
jQuery.prototype = { init: function(){ }, css: function(){}, }
結果:
blog