最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中鏈?zhǔn)秸{(diào)用之研習(xí)

 更新時(shí)間:2011年04月07日 22:03:56   作者:  
方法鏈一般適合對(duì)一個(gè)對(duì)象進(jìn)行連續(xù)操作(集中在一句代碼)。一定程度上可以減少代碼量,缺點(diǎn)是它占用了函數(shù)的返回值。

一、對(duì)象鏈:方法體內(nèi)返回對(duì)象實(shí)例自身(this)

復(fù)制代碼 代碼如下:

function ClassA(){
this.prop1 = null;
this.prop2 = null;
this.prop3 = null;
}
ClassA.prototype = {
method1 : function(p1){
this.prop1 = p1;
return this;
},
method2 : function(p2){
this.prop2 = p2;
return this;
},
method3 : function(p3){
this.prop3 = p3;
return this;
}
}

定義了function/類(lèi)ClassA。有三個(gè)屬性/字段prop1,prop2,prop3,三個(gè)方法methed1,method2,method3分別設(shè)置prop1,prop2,prop3。
調(diào)用如下:
復(fù)制代碼 代碼如下:

var obj = new ClassA();
obj.method1(1).method2(2).method(3); // obj -> prop1=1,prop2=2,prop3=3

可以看到對(duì)obj進(jìn)行了連續(xù)三次操作,只要愿意ClassA的N多方法都這樣定義,調(diào)用鏈會(huì)一直延續(xù)。
該方式缺點(diǎn)是鏈方法唯一地綁定于一種對(duì)象類(lèi)型(ClaaaA),按這種方式實(shí)現(xiàn)鏈?zhǔn)讲僮?,每定義一個(gè)類(lèi),其方法體中都要返回this。第二種方式可以解決這個(gè)問(wèn)題。
二、函數(shù)鏈:對(duì)象傳入后每次調(diào)用返回函數(shù)自身
復(fù)制代碼 代碼如下:

/**
* chain 精簡(jiǎn)版
* @param {Object} obj
*/
function chain(obj){
return function(){
var Self = arguments.callee; Self.obj = obj;
if(arguments.length==0){
return Self.obj;
}
Self.obj[arguments[0]].apply(Self.obj,[].slice.call(arguments,1));
return Self;
}
}
//定義的function/類(lèi)ClassB
function ClassB(){
this.prop1 = null;
this.prop2 = null;
this.prop3 = null;
}
ClassB.prototype = {
method1 : function(p1){
this.prop1 = p1;
},
method2 : function(p2){
this.prop2 = p2;
},
method3 : function(p3){
this.prop3 = p3;
}
}

注意ClassB的method1,method2,method3中不再返回this了。
調(diào)用如下:
復(fù)制代碼 代碼如下:

var obj = new ClassB();
chain(obj)('method1',4)('method2',5)('method3',6); // obj -> prop1=4,prop2=5,prop3=6

第一種方式3次調(diào)用后返回了對(duì)象自身,這里使用一個(gè)空"()"取回對(duì)象
復(fù)制代碼 代碼如下:

// result -> prop1=4,prop2=5,prop3=6
var result = chain(obj)('method1',4)('method2',5)('method3',6)();

這種方式寫(xiě)類(lèi)時(shí)方法體中無(wú)須返回this,且可以對(duì)任何對(duì)象進(jìn)行鏈?zhǔn)秸{(diào)用。
兩種的調(diào)用方式:
復(fù)制代碼 代碼如下:

obj
.method1(arg1)
.method2(arg2)
.method3(arg3)
...
chain(obj)
(method1,arg1)
(method2,arg2)
(method3,arg3)
...

相關(guān):
我的函數(shù)鏈之演變

相關(guān)文章

  • JavaScript中閉包的詳解

    JavaScript中閉包的詳解

    本文主要介紹了JavaScript中閉包的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • JS實(shí)現(xiàn)向表格行添加新單元格的方法

    JS實(shí)現(xiàn)向表格行添加新單元格的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)向表格行添加新單元格的方法,涉及javascript針對(duì)表格進(jìn)行動(dòng)態(tài)操作的技巧,需要的朋友可以參考下
    2015-03-03
  • JS CSS文章查看系統(tǒng)

    JS CSS文章查看系統(tǒng)

    自己寫(xiě)了個(gè)JS+CSS的小東西,用來(lái)看提升用戶(hù)體驗(yàn)的。 Name:WindowsTextShow;
    2008-12-12
  • 原生JS實(shí)現(xiàn)的輪播圖功能詳解

    原生JS實(shí)現(xiàn)的輪播圖功能詳解

    這篇文章主要介紹了原生JS實(shí)現(xiàn)的輪播圖功能,結(jié)合實(shí)例形式分析了javascript實(shí)現(xiàn)輪播圖的原理、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • js傳值后臺(tái)中文出現(xiàn)亂碼的解決方法

    js傳值后臺(tái)中文出現(xiàn)亂碼的解決方法

    這篇文章主要介紹了js傳值后臺(tái)中文出現(xiàn)亂碼的解決方法,涉及javascript針對(duì)中文的編碼及java解碼操作相關(guān)技巧,需要的朋友可以參考下
    2016-06-06
  • JavaScript中判斷字符串是否為空的幾種常用方法

    JavaScript中判斷字符串是否為空的幾種常用方法

    JavaScript字符串的判空方法有很多種,下面這篇文章主要給大家介紹了關(guān)于JavaScript中判斷字符串是否為空的幾種常用方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)

    如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)

    從IE 10開(kāi)始,type=”text” 的 input 在用戶(hù)輸入內(nèi)容后,會(huì)自動(dòng)產(chǎn)生一個(gè)小叉叉(X),方便用戶(hù)點(diǎn)擊清除已經(jīng)輸入的文本,下面通過(guò)本文給大家介紹下如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)
    2016-12-12
  • javascript中Date對(duì)象的使用總結(jié)

    javascript中Date對(duì)象的使用總結(jié)

    本文介紹了Date對(duì)象的使用方法,清晰明了,實(shí)現(xiàn)方法有多種,僅供大家參考,希望對(duì)大家有所幫助,下面就跟小編一起來(lái)看看吧
    2016-11-11
  • JavaScript執(zhí)行效率與性能提升方案

    JavaScript執(zhí)行效率與性能提升方案

    如何提升JavaScript執(zhí)行效率與性能在前端開(kāi)發(fā)中位于一個(gè)很重要的地方,這節(jié)來(lái)研究下如何在平時(shí)做項(xiàng)目過(guò)程中,提升JavaScript性能與運(yùn)行效率,需要的朋友可以參考下
    2012-12-12
  • Javascript淺析執(zhí)行機(jī)制的詳情

    Javascript淺析執(zhí)行機(jī)制的詳情

    這篇文章主要介紹了JavaScript執(zhí)行機(jī)制,想要搞懂JavaScript執(zhí)行機(jī)制,便與進(jìn)程與線程的概念脫不了干系,下面我們就來(lái)看看這JavaScript執(zhí)行機(jī)制的具體介紹吧,需要的朋友可以參考一下
    2022-08-08

最新評(píng)論

天峨县| 宣汉县| 三都| 宁波市| 西盟| 桑植县| 四子王旗| 岳阳市| 嘉黎县| 宝坻区| 葫芦岛市| 舟山市| 荆门市| 吴堡县| 唐海县| 临洮县| 黄大仙区| 溧阳市| 内丘县| 黄骅市| 临城县| 新沂市| 兴城市| 清水河县| 深水埗区| 二手房| 石景山区| 宁明县| 友谊县| 赣榆县| 长春市| 新邵县| 康乐县| 齐齐哈尔市| 泽普县| 威信县| 大洼县| 万安县| 景泰县| 乐至县| 明溪县|