函数参数中的对象解构是一个好的模式吗?

时间:2016-12-12 16:15:37

标签: javascript design-patterns functional-programming ecmascript-6

我真的爱上了功能对象解构。

例如:

var buyCoffee = function({sku, pounds = 1, roast:''}){
 ...more code
}
buyCoffee({sku:"cf-100" pounds: 3, roast: 'dark'});
buyCoffee({sku:"cf-101" roast: 'light'});

赞成

  • 类似于args对象的灵活性。
  • 添加简洁
  • 如果我不需要参数,则无需输入参数。

缺点

  • 变量名称一直被锁定。
  • 卷曲会更难。(据我所知)
  • 与传统的params相比,显着的计算开销?
  • 难以测试?

我想知道这种方法的缺点是什么?当我成长为开发者时,这是一个很好的模式吗?只是从战壕上寻找一些智慧。想法?

1 个答案:

答案 0 :(得分:6)

  

变量名称一直被锁定。

完全没有。您可以轻松地将结构化为任意变量:

function({sku:mySku, pounds:localPounds=1, roast=''}) { … // use mySku, localPounds and roast
  

卷曲会更难。

无论如何,当你传递物体时都没有晃动。使用可选参数进行currying总是很难。

  

潜在的计算开销?

取决于你对它的比较。