亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、對象鏈:方法體內(nèi)返回對象實例自身(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/類ClassA。有三個屬性/字段prop1,prop2,prop3,三個方法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

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

/**
* chain 精簡版
* @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/類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)用后返回了對象自身,這里使用一個空"()"取回對象
復(fù)制代碼 代碼如下:

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

這種方式寫類時方法體中無須返回this,且可以對任何對象進(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)文章

  • sass 中使用 /deep/ 修改 elementUI 組件樣式報錯的解決方案

    sass 中使用 /deep/ 修改 elementUI 組件樣式報錯

    這篇文章主要介紹了sass 中使用 /deep/ 修改 elementUI 組件樣式報錯的解決方案,嘗試用 ::v-deep 替換 /deep/ ,成功解決了問題,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 只需一行代碼,輕松實現(xiàn)一個在線編輯器

    只需一行代碼,輕松實現(xiàn)一個在線編輯器

    在瀏覽器地址欄中輸入一行代碼:data:text/html, <html contenteditable> ,回車即可把瀏覽器變臨時編輯器(需要瀏覽器支持 HTML5 屬性 contenteditable)
    2013-11-11
  • 百度留言本js 大家可以參考下

    百度留言本js 大家可以參考下

    百度留言本js 大家可以參考下。
    2009-10-10
  • javascript去掉前后空格的實例

    javascript去掉前后空格的實例

    在js中去除空格并不是可以直接使用trim來刪除,它在js中并不像我們想的那么好用,特別像我要刪除前后空格這個trim函數(shù)更不可靠了
    2013-11-11
  • js實現(xiàn)圓盤記速表

    js實現(xiàn)圓盤記速表

    本文分享了一個利用AmCharts制作的汽車速度計速表,通過設(shè)置不同的速度(數(shù)字)來動態(tài)改變計速表的指針。使用也非常簡單,下面給出方法。
    2015-08-08
  • javascript 組合按鍵事件監(jiān)聽實現(xiàn)代碼

    javascript 組合按鍵事件監(jiān)聽實現(xiàn)代碼

    這篇文章主要介紹了javascript 組合按鍵事件監(jiān)聽實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • uni-app網(wǎng)絡(luò)請求、數(shù)據(jù)緩存實例詳解

    uni-app網(wǎng)絡(luò)請求、數(shù)據(jù)緩存實例詳解

    這篇文章主要介紹了uni-app網(wǎng)絡(luò)請求、數(shù)據(jù)緩存的相關(guān)知識,本文通過實例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • JavaScript股票的動態(tài)買賣規(guī)劃實例分析下篇

    JavaScript股票的動態(tài)買賣規(guī)劃實例分析下篇

    這篇文章主要介紹了JavaScript對于動態(tài)規(guī)劃解決股票問題的真題例舉講解。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Node.js開發(fā)指南中的簡單實例(mysql版)

    Node.js開發(fā)指南中的簡單實例(mysql版)

    工作原因需要用到nodejs,于是找到了《node.js開發(fā)指南》這本書來看看,作者BYVoid 為清華大學(xué)計算機(jī)系的高材生,年紀(jì)竟比我還小一兩歲,中華地廣物博真是人才輩出,佩服
    2013-09-09
  • JS 動態(tài)加載腳本的4種方法

    JS 動態(tài)加載腳本的4種方法

    有時候我們需要動態(tài)的加入適合的js,因為有時候不需要將所有的js都加載進(jìn)來,以來提高效率,但這種方法比較適合單個js文件比較大的情況
    2009-05-05

最新評論