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

Jus*_*tin 3 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'});
Run Code Online (Sandbox Code Playgroud)

优点

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

缺点

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

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

Ber*_*rgi 6

变量名称一直被锁定.

一点也不.您可以轻松地将结构化为任意变量:

function({sku:mySku, pounds:localPounds=1, roast=''}) { … // use mySku, localPounds and roast
Run Code Online (Sandbox Code Playgroud)

卷曲会更难.

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

潜在的计算开销?

取决于你对它的比较.

  • 我认为[这是一个不同的问题](http://stackoverflow.com/q/12826977/1048572)而不是"我是否应该对选项对象使用解构". (2认同)