1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 讓你我減少對jQuery的依賴度

        時間:2024-07-21 02:26:35 jQuery Mobile 我要投稿
        • 相關推薦

        讓你我減少對jQuery的依賴度

          雖然現在慢慢減少了對jQuery的使用(項目上還是用,效率高點。平時基本不用了),希望從而減少對jQuery的依賴度。

          但是這鏈式操作的方式實在吸引人(貌似現在不少新庫都采用了鏈式操作)。

          新手無畏嘛,所以寫了以下代碼。主要是避免以后又忘了,呵呵。

          復制代碼 代碼如下:

          window.k = function() {

          return new k.fn.init(arguments);

          }

          k.fn = k.prototype = {

          init:function() {

          this.length = 0;

          //var args = Array.prototype.slice.call(arguments,0);

          Array.prototype.push.apply(this,arguments[0]);

          return this;

          },

          show:function() {

          console.log(Array.prototype.slice.call(this,0).join("$"));

          return this;

          },

          hide:function() {

          console.log(this);

          return this;

          }

          }

          k.fn.init.prototype = k.fn;

          console.log(k("0",1,2,3,4,5).show().hide());

          這只是進行了鏈式操作。但是在firbug下可以看到jQuery對象返回的是數組/類數組。要實現這個卻不知道怎么辦好。。

          總不能讓k.fn.prototype = new Array()吧。真要看jQuery源代碼還真是有點累。。

          下面是針對網友的一些回復

          其實鏈式操作很簡單,就是每次返回操作對象本身,這樣就可以持續的調用該對象本身定義的所有方法了。

          最簡單的例子:

          復制代碼 代碼如下:

          var o = function() {

          /**

          do something

          */

          return this;

          }

          o.prototype = {

          action1: function() {

          /**

          do something

          */

          return this;

          },

          action2: function() {

          /**

          do something

          */

          return this;

          }

          }

          你可以這樣調用:

          new o() //

          .action1() //

          .action2(); //每一步操作返回的都是實例化的o對象

          它其實等同于這樣:

          var a = new o();//如果沒有返回this,那么就不能在這里繼續調用了。因為返回的是undefined。

          a.action1(); //這個時候就只能對a(實例化的o對象的引用)來操作。

          a.action2();

          如果你用過jQuery就應該發現了。jQuery并不需要你使用new來實例化一個對象,在使用的時候顯得更方便。

          所以我們定義另一個對象來封裝上面提到的o對象:

          var k = function() {

          return new o();

          }

          這樣我們就可以這樣調用了:

          k().action1().action2();

          我為你推薦 一個叫 "函數化"的 構造JS的方法。

          復制代碼 代碼如下:

          //加粗表示強調

          //這個方法是 《javascript語言精粹》第52頁 5.4函數化 上的。

          var constructor = function (spec,my){

          var that,其他的私有實例變量;

          my = my || {};

          把共享的變量和函數添加到my中

          that = 一個新對象

          添加給that 的特權方法

          return that;

          }

        【讓你我減少對jQuery的依賴度】相關文章:

        jquery提交按鈕的代碼03-30

        jQuery程序設計03-30

        如何理解jquery事件冒泡03-29

        jQuery的DOM操作筆記03-29

        淺析jQuery 遍歷函數javascript03-29

        jQuery中prev()方法用法03-30

        jQuery中replaceAll()方法用法03-30

        基于jQuery的固定表格頭部的代碼03-30

        jQuery 源碼分析和Ready函數03-29

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>