乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      jQuery.fn和jQuery.prototype區(qū)別介紹

       ThinkTank_引擎 2016-03-10
               近期在讀jquery的源碼。

      發(fā)現(xiàn)這里有個(gè)東西很難理解。

      這里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么。

      來(lái)看下jQuery的源碼是怎么樣定義的:
      復(fù)制代碼 代碼如下:

      (function( window, undefined ) {

      var jQuery = (function() {
      // 構(gòu)建jQuery對(duì)象
      var jQuery = function( selector, context ) {
      return new jQuery.fn.init( selector, context, rootjQuery );
      }

      // jQuery對(duì)象原型
      jQuery.fn = jQuery.prototype = {
      constructor: jQuery,
      init: function( selector, context, rootjQuery ) {
      // something to do
      }
      };

      // Give the init function the jQuery prototype for later instantiation
      jQuery.fn.init.prototype = jQuery.fn;

      // 合并內(nèi)容到第一個(gè)參數(shù)中,后續(xù)大部分功能都通過(guò)該函數(shù)擴(kuò)展
      // 通過(guò)jQuery.fn.extend擴(kuò)展的函數(shù),大部分都會(huì)調(diào)用通過(guò)jQuery.extend擴(kuò)展的同名函數(shù)
      jQuery.extend = jQuery.fn.extend = function() {};

      // 在jQuery上擴(kuò)展靜態(tài)方法
      jQuery.extend({
      // something to do
      });

      // 到這里,jQuery對(duì)象構(gòu)造完成,后邊的代碼都是對(duì)jQuery或jQuery對(duì)象的擴(kuò)展
      return jQuery;

      })();

      window.jQuery = window.$ = jQuery;
      })(window);

      這里我們可以看到:
      復(fù)制代碼 代碼如下:

      var jQuery = function( selector, context ) {
      return new jQuery.fn.init( selector, context, rootjQuery );
      }

      jQuery 其實(shí)jQuery.fn.init()返回一個(gè)對(duì)象。那么jquery.fn.init()返回的又是什么呢?
      復(fù)制代碼 代碼如下:

      jQuery.fn = jQuery.prototype = {
      constructor: jQuery,
      init: function( selector, context, rootjQuery ) {
      // something to do
      }
      };

      就是從這里來(lái)的,一個(gè)javascript對(duì)象。

      這里有個(gè)問(wèn)題。
      復(fù)制代碼 代碼如下:

      jQuery.fn = jQuery.prototype

      那么就是 將jQuery 的原型對(duì)象賦值給了 jQuery.fn。

      再看下面:
      復(fù)制代碼 代碼如下:

      jQuery.fn.init.prototype = jQuery.fn;

      看到這里我有一個(gè)想法。就是 將jQuery.fn 給了 jQuery.fn.init.prototype.

      那么在這之前jQuery.fn.init.prototype.是什么?

      是不是沒(méi)有?這個(gè)時(shí)候它的原型是{};

      那么為了可以去調(diào)用init外面的方法。就做了一個(gè)處理。

      將jQuery.fn 賦值給jQuery.fn.init.prototype.這樣的話,

      jQuery.fn.init.prototype的原型也就是jQuery的原型對(duì)象就是 jQuery.fn ( 注意jQuery = function(return new jQuery.fn.init()))。

      賦值了以后。在調(diào)用的時(shí)候,當(dāng)init中沒(méi)有方法的時(shí)候,就會(huì)去原型函數(shù)中調(diào)用。

      那么這樣的話。

      你可能會(huì)想到這樣一個(gè)東東:
      復(fù)制代碼 代碼如下:

      jQuery.extends()
      jQuery.fn.extends()

      我想你應(yīng)該明白它們的區(qū)別了吧。

      jQuery.extends()是直接擴(kuò)展jQuery.而jQuery.fn.extends(),很明顯是擴(kuò)展的原型。

      這就是為什么jQuery.fn.extends()中的大部分方法來(lái)自己于jQuery.extends()。

      這里又將 jQuery.fn 賦值給了 jQuery.fn.init.prototype.

      那么就有這樣的一個(gè)關(guān)系:
      復(fù)制代碼 代碼如下:

      jQuery.prototype = jQuery.fn = jQuery.fn.init.prototype

      您可能感興趣的文章:
      jQuery.fn和jQuery.prototype區(qū)別介紹
      jquery $.fn $.fx是什么意思有什么用
      開發(fā)插件的兩個(gè)方法jquery.fn.extend與jquery.extend
      通過(guò)jQuery源碼學(xué)習(xí)javascript(二)
      jQuery中$.fn的用法示例介紹
      jquery與prototype框架的詳細(xì)對(duì)比
      jquery的extend和fn.extend的使用說(shuō)明
      jquery中常用的函數(shù)和屬性詳細(xì)解析
      jQuery 學(xué)習(xí)第七課 擴(kuò)展jQuery的功能 插件開發(fā)
      jQuery基礎(chǔ)框架淺入剖析

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多