JavaScript對象鏈式作業碼(jquery)

來源:互聯網
上載者:User

雖然現在慢慢減少了對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;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.