讓你我減少對jQuery的依賴度

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

讓你我減少對jQuery的依賴度

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

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

複製代碼 代碼如下:

window.k = function() {

return new (arguments);

}

= otype = {

init:function() {

th = 0;

//var args = (arguments,0);

y(this,arguments[0]);

return this;

},

show:function() {

((this,0)("$"));

return this;

},

hide:function() {

(this);

return this;

}

}

otype = ;

(k("0",1,2,3,4,5)()());

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

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

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

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

最簡單的例子:

複製代碼 代碼如下:

var o = function() {

/**

do something

*/

return this;

}

otype = {

action1: function() {

/**

do something

*/

return this;

},

action2: function() {

/**

do something

*/

return this;

}

}

你可以這樣調用:

new o() //

on1() //

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

它其實等同於這樣:

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

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

on2();

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

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

var k = function() {

return new o();

}

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

k()on1()on2();

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

複製代碼 代碼如下:

//加粗表示強調

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

var constructor = function (spec,my){

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

my = my || {};

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

that = 一個新對象

添加給that 的特權方法

return that;

}