如何使用 Factory Function 回傳 Function ?
栏目: JavaScript · 发布时间: 7年前
内容简介:傳統 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 既精簡又優雅
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
如何把事情做到最好
乔治·伦纳德 / 张乐 / 中国青年出版社 / 2014-2 / 29.90元
•改变全球9800万人的人生指导书 •全美第一本系统阐述学习与成功之道的经典著作 •长期盘踞全美畅销书榜单 •21年后,这本传奇之书终于在中国震撼上市 •把事情做到最好,第一不强求天赋,第二不介意起步的早晚,你要做的就是“起步走”并“不停地走” 《如何把事情做到最好》出 版于1992年,经久不衰,经过一代又一代的读者口碑相传后,畅销至今。作者以其独特的视角告诉人们,如......一起来看看 《如何把事情做到最好》 这本书的介绍吧!