1. 程式人生 > >奇舞js筆記——*——過程抽象,高階函數,面向函數編程

奇舞js筆記——*——過程抽象,高階函數,面向函數編程

視頻 如果 n) 函數編程 href 過程 color 新的 blank

註:


1.學習視頻地址

2.ppt地址

3.個人感想:

  是我hin厲害的師父推薦我看的月影大大的視頻,感覺對於我這個小白來說,真的是一遍又一遍的刷新知識面。我覺得像月影大大這種大佬的思路,我接觸之後真的是受益匪淺。

  所以我總結出來不僅是自己記筆記,也是想分享給想要成為真正的前端“工程師”的前端er。

  真的很珍惜這種知識面被刷新的感覺——越學習,越感到自己無知,共勉。

摘要


1.數據抽象是針對數據處理的;

2.過程抽象(例如高階函數)是針對函數處理的;

3.用高階函數可以對已有

API的接口進行修改,而不影響函數內部內容。

目錄


一個問題:修改已有API中的參數順序

1.直接重寫

2.新函數調用

3.用高階函數

4.總結

正文


問題:要更改一個API中的參數順序:

技術分享

1.直接重寫

function setColor2(el,color){

    el.style.color=color;

}

缺點:

如果api很復雜,重寫成本很高

而且名字不好起

2.新函數調用

function setColor2(el,color){
    setColor(color,el);
}

不用管API內部邏輯,但依然不好起名和管理

3.創建高階函數

能把所有函數的參數順序顛倒

function reverseArgs(fn){

    return function(...args){

        args=args.reverse();

        return fn.apply(this,args)

    }
}
setColor=reverseArgs(setColor);

不去修改別人代碼,不關心具體函數,只抽象過程

復用性很高

擴展性很高,例如:

技術分享

timeout使函數在1000毫秒之後執行,用

bind在函數執行後500毫秒執行輸出語句

(更改了API的更多接口信息)

總結:

1.數據抽象是針對數據處理的;

2.過程抽象(例如高階函數)是針對函數處理的;

3.用高階函數可以對已有API的接口進行修改,而不影響函數內部內容。

奇舞js筆記——*——過程抽象,高階函數,面向函數編程