Object.assign与lodash _.assign的区别

30

4
当然,它们都旨在实现相同的功能。我唯一能看出来的区别是Object.assign会将原始值转换为对象,而_.assign则不会(例如:Object.assign("hello", { foo: 1 }))。 - apsillers
1
最好的方法是研究它们的源代码。然而,在lodash的情况下,这有点复杂,因为它在每个版本中都会发生变化 - changelog甚至提到了行为上的差异。 - Bergi
谢谢@apsillers!这是一个很好的区分要知道。如果你想写一个答案,我会给你点赞。 - sfletche
vs angular.copy()。我觉得这很有趣。 - MrBoJangles
2个回答

35

取决于浏览器。根据lodash文档:

当可用时,_.assign使用内置的Object.assign。

您可以在此处查看浏览器支持情况:

基本上,IE不支持,因此在该情况下使用lodash代码。

Object.assign的MDN文档


抱歉,我应该表述得更清楚。我意识到一些浏览器尚未支持Object.assign。我想知道,在那些同时提供两者的环境中,它们之间是否有区别? - sfletche
4
Lodash 依赖于浏览器,因此在该情况下会使用原生实现。 - omarjmh
1
啊!对不起!我误读了你的回答。我现在明白你的意思了(即 lodash 自身在可用时使用 Object.assign,这使得 lodash 的作者似乎并没有打算让这两者有任何区别)。非常有帮助。谢谢 @JordanHendrix! - sfletche
没有问题!是的,对于Object.assign来说就是这样。 - omarjmh

1

除了其他评论之外,根据这个小基准测试,似乎Object.assign比Lodash.assign稍微快一些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接