jQuery源碼學習一: 建立一個jquery實例

前言:

jquery是每一個前端都會的基礎技能,衆所周知,jquery返回的是jquery實例方法,可是咱們彷佛是直接使用$就能夠獲取到jquery的方法啦,能夠在瀏覽器中判斷一下 window.$ 和window.jQuery,jQuery 之間的關係,就會發現他們之間是全等的;css

不使用new方法調用

咱們通常調用實例大部分是經過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(){},
  }

結果:
Image textblog

相關文章
相關標籤/搜索