javascript - 使默认值适用于对象参数的各个字段

标签 javascript ecmascript-6 default-value

<分区>

我的方法的参数之一应该是一个对象。 像往常一样,我可以在原型(prototype)中为它指定一个默认值。

但是只有当我在调用中完全省略这个参数时才会使用这个默认值。

但我希望它应用于字段级别:如果我提供了一个值但省略了默认值中存在的某些字段,则应从中填写它们:

function method(id, data, options = { original: true, duplicate: true }) {
    console.log(options.original);
    console.log(options.duplicate);
}

method("id", "data", { duplicate: false })
// undefined <= I expect this to be true
// false

method("id", "data")
// true
// true

默认情况下未指定的任何参数也应被接受并按原样传递:

method("id", "data", { duplicate: false, other: false })

是否有任何句法工具可供我使用?而且,即使没有并且我必须使用自定义逻辑,我能否以某种方式从其中的原型(prototype)中提取默认值?

ES6 Object Destructuring Default Parameters实现了类似的东西,但它将“字段”转换为单独的变量(虽然我希望它们保留在对象内)并且它不允许原型(prototype)中未指定的字段。

最佳答案

您可以对 destructuring assignment 使用默认值分配符号:

function method(id, data, {original, duplicate} = { original: true, duplicate: true }) {
    console.log(original);
    console.log(duplicate);
}

关于javascript - 使默认值适用于对象参数的各个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39762315/

相关文章:

c++ - 初始化类成员 - 默认值还是成员初始化列表?

javascript - 输入值 - 未定义或未显示

javascript - 将 angulajs UI-Select 绑定(bind)到 UI-Grid 过滤器

javascript - jQuery/Javascript - 连接两个过滤器 - 仅显示 tr 和 td 匹配数组

javascript - 使用 Webpack 代字号别名时通过 Vim 中的 'gf' 解析 JavaScript 模块

javascript - [Symbols.serialize]() 在这里做什么?

javascript - 箭头函数是否比绑定(bind)方法更快地传递此参数

javascript - 在特定端口服务 Vue Cli 3.10.0 项目

javascript - 替换字符串的最后一部分,javascript

c# - 您建议以哪种方式返回非空的默认值?