对象传播与 Object.assign

2024-01-09

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

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

使用对象传播

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

或者使用 Object.assign

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

这是commit https://github.com/FormidableLabs/radium/commit/ca9e9f6f62bb8af692ec120e2c4a0be8c5a7705c这让我想知道。


这不一定是详尽无遗的。

扩展语法

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

优点:

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

  • 不太冗长。

缺点:

  • 最初写这个答案时,这是一个proposal https://github.com/sebmarkbage/ecmascript-rest-spread,未标准化。使用提案时,请考虑如果您现在用它编写代码并且它没有标准化或在走向标准化时发生变化,您会做什么。此后,这已在 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);
    

缺点:

  • 更详细。
  • 如果编写代码以便在没有本机支持的环境中执行,则需要进行填充。

这是让我想知道的承诺。

这与你要问的没有直接关系。该代码没有使用Object.assign(),它正在使用用户代码(object-assign)做同样的事情。他们似乎正在使用 Babel 编译该代码(并将其与 Webpack 捆绑在一起),这就是我所说的:您可以直接编译的语法。他们显然更喜欢这样做,而不是必须包括object-assign作为将进入其构建的依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对象传播与 Object.assign 的相关文章

随机推荐

  • PHP | Define() 与 const

    在 PHP 中 可以通过两种方式声明常量 With define keyword define FOO 1 Using const keyword const FOO 1 这两者之间的主要区别是什么 何时以及为何应使用其中一种 何时使用另一
  • WASM 可以在没有任何 JavaScript 的情况下访问 DOM 吗?

    有没有什么方法可以在没有 JavaScript 的情况下获得对 DOM 和 或 WebAPI 即全屏 API 的读 写访问权限 我正在尝试用 C 语言构建一个基本应用程序 C 源代码实际上是 GC 语言转译的结果 我正在构建的应用程序将作为
  • 取消线程或永久删除单个 Gmail 邮件,而不关闭线程

    我有从扫描仪通过电子邮件收到的文档 扫描仪无法改变主题 来自扫描仪的所有电子邮件主题均相同 扫描到电子邮件服务器作业 但是 每个文件名都是唯一的 谷歌将消息串联起来 而我通常希望继续进行串联 我运行一个脚本来提取 PDF 并放入驱动器 然后
  • 如何在目录上运行coverage.py?

    我有一个目录tests其中包括许多不同的测试 名为test 我试着跑coverage run tests但它不起作用 如何运行单个命令来覆盖目录中的多个文件 下面是一个完整的示例 其中来自同一 PWD 的所有阶段的命令都集中在一个位置 通过
  • 计算两个重复列表的差异

    我有两个清单 List
  • 为什么 join() 不自动将其参数转换为字符串?你什么时候不希望它们成为字符串?

    我们有一个清单 myList 1 two 想要打印出来 通常我会使用类似的东西 0 and 1 format myList 但你也可以这样做 and join myList 但不幸的是 gt gt gt and join myList Tr
  • 如何使用 google Mailapp 回复电子邮件线程?

    我正在使用 google Mailapp Api 从电子表格自动发送电子邮件 我编写了一个脚本来自动发送带有电子表格数据的电子邮件 目前 我的脚本会发送一封新电子邮件 有没有办法使用 google Mailapp api 向现有电子邮件线程
  • 打印时在 PDF 中插入空白页

    我确信这个问题无处不在 尽管我似乎找不到答案 我希望我的 PDF 文档在 PDF 阅读器中显示时没有空白页 但在封面后打印空白页 这样打印出来的文档右侧奇数页 左侧偶数页 有其他人遇到这个问题和 或找到解决方案吗 您可以使用多价工具 下载多
  • 如何将 Node.js 和 NPM 更新到最新版本?

    我刚刚安装了 Node js 和 NPM 节点包管理器 我安装了 NPM 来访问其他 Node js 模块 安装 Node js 和 NPM 后 我注意到两者都没有可用的最新版本 如何将 Node js NPM 和我的 Node js 模块
  • 错误:实体必须至少有 1 个用 @PrimaryKey 注释的字段

    我是使用房间持久性的新手 每当我尝试运行代码时都会出现此错误 编辑时没有显示错误 但我在 gradle 上遇到构建错误 我不得不复制粘贴代码 但似乎没有一个起作用 这让我很失望 错误如下 error An entity must have
  • NavigationLink 内的 tvOS 按钮不起作用

    我已经使用 swift 和 swiftui 构建了一个 iOS 应用程序 现在我正在开发该应用程序的 tvOS 版本 但是 我有几个问题 其中一个问题仍未解决 tvOS 文本字段透明背景 https stackoverflow com qu
  • 是否可以等到所有 javascript 文件加载完毕后再执行 javascript 代码?

    我们有几个 JavaScript 文件 我们在母版页的底部加载它们 但是 我遇到的情况是 我需要在加载其他脚本之前执行一些 JavaScript 是否可以等到所有 JavaScript 文件加载完毕后再执行一些 JavaScript 代码
  • 从 SCM 检出 Maven 项目 - 无连接器

    我在 Eclipse Indigo 中签出 Maven 项目时遇到问题 我已经安装了 m2e 插件 Subclipse Git 但无法选择合适的 SCM 类型 如何解决这个问题 阿凡是对的 连接器仍然在 Indigo 中 只是隐藏了一点 启
  • MotionLayout:同一视图上的 OnSwipe 和 OnClick

    我正在为我的页面使用 MotionLayout 我有两种状态 可以通过视图的 OnSwipe 进行切换
  • 从 Finalizer 调用托管资源是否安全? (如果我检查空)

    打电话不安全吗 组件 Dispose 如果我检查空 如果我将代码更改为 MyResource Dispose public void Dispose Check to see if Dispose has already been call
  • 错误:服务“xxx”使用未定义的网络“xxx”

    它一直对我说网络是不明确的 错误 服务frontend network使用未定义的网络frontend network 然而 我看到已经有这样一个网络 docker网络ls 我错过了什么 我需要你的帮助 我在谷歌上读了很多相关内容 但找不到
  • Google表格查询非连续范围

    是否可以编写一个引用非相邻 不连续 不连续 我不知道正确的短语 范围的查询 在公式内 例如 query A2 C E2 F 选择 Col2 其中 Col5 3 我希望能够将查询放在 D 列中 因此我想分割它周围的范围 如果我只是说 Quer
  • 在Python中迭代多个列表中值的所有组合[重复]

    这个问题在这里已经有答案了 给定多个可能不同长度的列表 我想迭代所有值的组合 每个列表中的一项 例如 first 1 5 8 second 0 5 4 然后我希望的输出是 combined 1 0 5 1 4 5 0 5 5 4 8 0 5
  • Dapper:单元测试 SQL 查询

    我从 Dapper 微型 ORM 开始 我使用 Dapper Rainbow 我想测试查询和它们检索的数据 我的意思是 例如 我有用户服务用方法GetAll 并且我想测试 sql 查询是否从某个列表中检索所有用户 不是从数据库中检索 因为我
  • 对象传播与 Object.assign

    假设我有一个options变量 我想设置一些默认值 这两种选择的优点 缺点是什么 使用对象传播 options optionsDefault options 或者使用 Object assign options Object assign