对象传播与Object.assign
假设我有一个options
变量,并且想要设置一些默认值。
这两种选择的优点/缺点是什么?
使用对象传播
options = {...optionsDefault, ...options};
或使用Object.assign
options = Object.assign({}, optionsDefault, options);
这就是让我感到奇怪的承诺。
回答:
这并不一定是详尽无遗的。
传播语法
options = {...optionsDefault, ...options};
优点:
如果编写代码以在没有本机支持的环境中执行,则可以只编译此语法(与使用polyfill相对)。(例如,使用Babel。)
不太冗长。
缺点:
最初编写此答案时,这只是一个建议,而不是标准化的。使用建议时,请考虑一下如果现在使用它编写代码会做什么,并且在朝着标准化的方向发展时,它不会变得标准化或更改。此后已在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。
这就是让我感到奇怪的承诺。
这与您的要求没有直接关系。该代码未使用Object.assign()
,它正在使用object-assign
执行相同操作的用户代码()。他们似乎正在使用Babel编译该代码(并将其与Webpack捆绑在一起),这就是我所说的:您可以编译的语法。他们显然更喜欢将其包含object-assign
在其构建中作为依赖项。
以上是 对象传播与Object.assign 的全部内容, 来源链接: utcz.com/qa/408741.html