我有一系列(纯)函数负责扩展对象图中的标记。
我不会详细介绍细节,因为它们并不重要,但它们类似于:
expandData => expandDataNodes => expandDataNode => expandDataNodeItem
我的一切工作正常,但我现在有了新的要求,这意味着我现在需要在expandDataNodeItem
中使用用户定义的配置。显然在OO世界中,这是一个微不足道的问题,只需通过getter在DataExpander
类上使用配置并在需要时将其拉出来,但我对处理这种情况的选项感兴趣。使用功能范例。
我知道我可以为这些函数中的每一个添加一个参数,并向下传递选项或函数以访问该选项,但是这会产生许多函数,这些函数对将它添加到签名中的选项不感兴趣感觉真的很混乱。
目前我能想到的最好的选择是将所有这些函数包装在另一个函数中,并使用闭包使选项可用于所有函数,但是有更好的方法吗?
答案 0 :(得分:0)
有了这几个细节,我会尝试另一种方法:你可以重构你的代码,这样需要一些配置的功能可能已经注入了部分应用的功能。也就是说,您当前的函数应该是高阶函数。
检查我演示该方法的以下示例:
const f = ( { config1, configN } ) => x => config1 + x
const g = f => x => f ( x )
const settings = {
config1: 1
}
// _f would be the function that you would provide
// when you need to do certain operation based on
// who knows what configuration
const _f = f ( settings )
const y = g ( _f ) ( 2 )
console.log( y )