gpt4 book ai didi

javascript - 对象传播与 Object.assign

转载 作者:IT老高 更新时间:2023-10-28 11:04:56 27 4
gpt4 key购买 nike

假设我有一个 options 变量,我想设置一些默认值。

这两种选择的优点/缺点是什么?

使用对象传播

options = {...optionsDefault, ...options};

或者使用 Object.assign

options = Object.assign({}, optionsDefault, options);

这是 commit这让我想知道。

最佳答案

这不一定是详尽的。

扩展语法

options = {...optionsDefault, ...options};

优点:

  • 如果在没有 native 支持的环境中编写代码以执行,您可以只编译此语法(而不是使用 polyfill)。 (以 Babel 为例。)

  • 不那么冗长。

缺点:

  • 最初写这个答案时,这是一个 proposal ,不规范。在使用提案时,请考虑如果您现在使用它编写代码并且它没有标准化或随着它走向标准化而发生变化,您会做什么。此后,这已在 ES2018 中标准化。

  • 文字,而非动态。


Object.assign()

options = Object.assign({}, optionsDefault, options);

优点:

  • 标准化。

  • 动态。示例:

    var sources = [{a: "A"}, {b: "B"}, {c: "C"}];
    options = Object.assign.apply(Object, [{}].concat(sources));
    // or
    options = Object.assign({}, ...sources);

缺点:

  • 更详细。
  • 如果编写代码以在没有原生支持的环境中执行,则需要 polyfill。

This is the commit that made me wonder.

这与您的要求没有直接关系。该代码没有使用 Object.assign(),而是使用了执行相同操作的用户代码 (object-assign)。他们似乎正在使用 Babel 编译该代码(并将其与 Webpack 捆绑),这就是我所说的:您可以编译的语法。他们显然更愿意将 object-assign 作为依赖项包含在他们的构建中。

关于javascript - 对象传播与 Object.assign,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com