【发布时间】:2015-12-31 17:50:54
【问题描述】:
假设我有一个options 变量,我想设置一些默认值。
这两种选择的优点/缺点是什么?
使用对象传播
options = {...optionsDefault, ...options};
或者使用 Object.assign
options = Object.assign({}, optionsDefault, options);
这就是让我好奇的commit。
【问题讨论】:
-
嗯,第一个是提议的新语法,不是 ES6 的一部分,所以这取决于你要遵守什么标准。
-
定义“best”(小心,不要以基于意见的问题结束:-)
-
如果在没有本机支持的环境中运行,也可能取决于您希望如何支持它。您可能只能编译的语法。您可能需要 polyfill 的对象或方法。
-
除了兼容性问题之外,Object.assign 可以改变原始对象,这很有用。不能传播。
-
澄清@pstanton 的评论 - object.assign 可以修改现有的 target 对象(从源覆盖属性,同时保持其他属性不变);它不会触及 source 对象。我首先将他的“原始对象”读为“源对象”,因此为其他类似误读的人写下这篇笔记。 :)