<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 讓你我減少對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

    主站蜘蛛池模板: 精品国产一级在线观看 | wwwvr高清亚洲精品二区| 欧美精品亚洲人成在线观看| 国产精品99久久精品| 亚洲AV成人精品一区二区三区| 国产区精品高清在线观看| 国产福利91精品一区二区| 日韩精品乱码AV一区二区| 精品亚洲欧美无人区乱码| 99久久精品免费看国产免费| 国产精品内射后入合集| 青青青国产精品一区二区| 四虎精品免费永久免费视频| 精品久久人人做人人爽综合| 91久久精品国产免费直播| 国产精品久久久久天天影视| 国产AV国片精品| 国产精品一区二区久久不卡| 无码人妻精品一区二区三| 亚洲精品无码乱码成人| 亚洲爆乳无码精品AAA片蜜桃| 久久精品国产99久久香蕉| 国产一区二区三区精品视频 | 国产精品久久久福利| 99在线精品视频观看免费| 精品国产乱码久久久久久郑州公司| 夜夜高潮夜夜爽国产伦精品| 四虎国产精品永久在线看| 亚洲精品国产va在线观看蜜芽| 拍国产真实乱人偷精品| 欧美精品一区二区在线精品| 欧美日韩综合精品| 亚洲精品一级无码鲁丝片| 亚洲精品无码专区2| 在线精品亚洲一区二区小说 | 8050免费午夜一级国产精品| 四虎国产精品永久地址99| 视频二区国产精品职场同事| 亚洲愉拍自拍欧美精品 | 国产精品女同一区二区| 99麻豆久久久国产精品免费|