如何使用 Factory Function 回傳 Function ?
栏目: JavaScript · 发布时间: 6年前
内容简介:傳統 Factory Function 是用來回傳 Object,但 ECMAScript 支援 First-Class Function,且 Function 其實也是 Object,因此 Factory Function 可廣義回傳底層已經準備好的 Function。ECMAScript 2015已經準備好
傳統 Factory Function 是用來回傳 Object,但 ECMAScript 支援 First-Class Function,且 Function 其實也是 Object,因此 Factory Function 可廣義回傳底層已經準備好的 Function。
Version
ECMAScript 2015
Switch Case
const funcA = () => 'a'; const funcB = () => 'b'; const emptyFunc = () => {}; const factoryFunc = funcName => { switch (funcName) { case 'funcA': return funcA; case 'funcB': return funcB; default: return emptyFunc; } }; console.log(factoryFunc('funcA')()); console.log(factoryFunc('funcB')()); console.log(factoryFunc('funcC')());
已經準備好 funcA
、 funcB
,在 factoryFunc()
由 user 傳入 function 名稱
,就回傳指定的 function。
最直覺的寫法就是使用 switch case
。
Object Literal
const funcA = () => 'a'; const funcB = () => 'b'; const emptyFunc = () => {}; const funcMap = { funcA, funcB, }; const factoryFunc = funcName => funcMap[funcName] || emptyFunc; console.log(factoryFunc('funcA')()); console.log(factoryFunc('funcB')()); console.log(factoryFunc('funcC')());
由於 Object Literal 的 key / value 特性,其實可以用來取代 switch case
,至於 default
則使用 ||
表示。
Conclusion
- 使用 Factory Function 回傳 function 是實務上常見的需求,尤其以 Object Literal 實現 Factory Function 既精簡又優雅
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX编程环境
Brian W.Kernighan、Rob Pike / 陈向群/等 / 机械工业出版社 / 1999-10-1 / 24.00
本书对UNIX操作系统的编程环境做了详细而深入的讨论,内容包括UNIX的文件系统、Shell、过滤程序、I/O编程、系统调用等,并对UNIX中的程序开发方法做了有针对性的指导。本书内容深入浅出,实例丰富,无论是UNIX系统的初学者还是专业人员都可从本书受益。本书亦可作为大学生、研究生学习UNIX的教材。一起来看看 《UNIX编程环境》 这本书的介绍吧!