如何使用 Factory Function 回傳 Function ?

栏目: JavaScript · 发布时间: 5年前

内容简介:傳統 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')());

已經準備好 funcAfuncB ,在 factoryFunc() 由 user 傳入 function 名稱 ,就回傳指定的 function。

最直覺的寫法就是使用 switch case

如何使用 Factory Function 回傳 Function ?

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 則使用 || 表示。

如何使用 Factory Function 回傳 Function ?

Conclusion

  • 使用 Factory Function 回傳 function 是實務上常見的需求,尤其以 Object Literal 實現 Factory Function 既精簡又優雅

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Masterminds of Programming

Masterminds of Programming

Federico Biancuzzi、Chromatic / O'Reilly Media / 2009-03-27 / USD 39.99

Description Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. Think along with Adin D. Falkoff (APL), Jame......一起来看看 《Masterminds of Programming》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换