假设我有一个options变量,并且想要设置一些默认值。
options
这两种选择的优点/缺点是什么?
使用对象传播
options = {...optionsDefault, ...options};
或使用Object.assign
options = Object.assign({}, optionsDefault, options);
这就是让我感到奇怪的承诺。
这并不一定是详尽无遗的。
如果编写代码以在没有本机支持的环境中执行,则可以只编译此语法(与使用polyfill相对)。(例如,使用Babel。)
不太冗长。
最初编写此答案时,这只是一个建议,而不是标准化的。使用建议时,请考虑一下如果现在使用它编写代码会做什么,并且在朝着标准化的方向发展时,它不会变得标准化或更改。此后已在ES2018中标准化。
从字面上看,不是动态的。
Object.assign()
标准化。
动态。例:
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在其构建中作为依赖项。
object-assign