奇舞js筆記——*——過程抽象,高階函數,面向函數編程
阿新 • • 發佈:2017-07-10
視頻 如果 n) 函數編程 href 過程 color 新的 blank
API的接口進行修改,而不影響函數內部內容。
bind在函數執行後500毫秒執行輸出語句
註:
1.學習視頻地址
2.ppt地址
3.個人感想:
是我hin厲害的師父推薦我看的月影大大的視頻,感覺對於我這個小白來說,真的是一遍又一遍的刷新知識面。我覺得像月影大大這種大佬的思路,我接觸之後真的是受益匪淺。
所以我總結出來不僅是自己記筆記,也是想分享給想要成為真正的前端“工程師”的前端er。
真的很珍惜這種知識面被刷新的感覺——越學習,越感到自己無知,共勉。
摘要
1.數據抽象是針對數據處理的;
2.過程抽象(例如高階函數)是針對函數處理的;
3.用高階函數可以對已有
目錄
一個問題:修改已有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毫秒之後執行,用
(更改了API的更多接口信息)
總結:
1.數據抽象是針對數據處理的;
2.過程抽象(例如高階函數)是針對函數處理的;
3.用高階函數可以對已有API的接口進行修改,而不影響函數內部內容。
奇舞js筆記——*——過程抽象,高階函數,面向函數編程