javascript - 将对象传递给接受参数列表的函数

标签 javascript coffeescript

我有一个定义如下的函数

postEvent = (data) ->
 throw new Error("category is required for structured events") if not category
 throw new Error("action is required for structured events") if not action

 $window.submit 'type1', data.category, data.action, data.label, data.property, data.value

类别和操作是必需的,但其余的不是。如果 data 对象不包含给定值,则不应传递该值。

我可以使用大量的 if 语句,但我怀疑有更好的方法。 因此,我正在寻找一种方法来解开对象值并将其传递给其他函数。

示例。

data = {category: 'cat1', action: 'action1', value: 1.2}
postEvent(data)

这应该会产生以下结果

$window.submit 'type1', 'cat1', 'action1', 1.2

最佳答案

  1. 收集所需参数

    params = [data.category, data.action]
    
  2. 收集所有可选参数

    OPTIONAL = ['label', 'property', 'value']
    for prop in OPTIONAL
      params.push(data[prop]) if data.hasOwnProperty(prop)
    
  3. 使用apply调用方法

    $window.submit.apply($window, params)
    

关于javascript - 将对象传递给接受参数列表的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39039345/

相关文章:

javascript - 如何获取具有特定类的多个元素 ID

CoffeeScript 未定义

ios - 在移动 Safari(iOS 模拟器)中单击按钮后触发 mouseUp

javascript - Rails Table - 动态条件字体格式

javascript - 在 Coffeescript 中以编程方式调用 "new"

javascript - Jquery 更改事件不起作用

javascript - 如何获取单击的表行的 TBODY?

javascript - js.coffee.erb - 同步问题?

javascript - Angular : how do I call a scope method on state change?

javascript - Backbone 和 bindAll : "func is undefined"