JavaScript ES2020:优化 Object.assign()
随着新的 JavaScript 版本的更新,Object.assign()这个方法也得到了一些优化。本文将会介绍这些优化以及如何使用它们来提高你的开发效率。
Object.assign() 是一种对象复制方法,它可以将一个或多个源对象的属性复制到目标对象中。在 ES6 中,它成为了标准的库函数。尽管它非常有用,但它并没有太多的选项来增强其功能。但是,在 ES2020 中,Object.assign() 方法得到了一些改进,现在支持 嵌套对象拷贝、复制 symbol 类型的属性、自定义的可枚举属性会根据所在对象原型链上的可枚举属性是否被省略而被保留或丢弃。下面来详细介绍一下这些改进点。
- 嵌套对象拷贝
在以前的 Object.assign() 中,不能够深度拷贝一个对象。现在,ES2020 中,它支持深度拷贝了。
-- -------------------- ---- ------- ----- ---- - - -- -- -- -- -- - -- -- -- - - -- ----- ---- - - -- --- -- - -- -- - -- ----- ------ - ----------------- ----- ------ -------------------- -- - -- --- -- -- -- - -- --- -- - - -展开代码
- 复制 symbol 类型的属性
在 ES6 中,Object.assign() 方法仅仅复制了源对象的可枚举属性。这并不足够,因为我们可能需要复制 symbol 类型的属性。在 ES2020 中,Object.assign() 现在支持复制 symbol 类型的属性。你可以在参数列表中提供一个或多个带有 Symbol 属性的源对象。
-- -------------------- ---- ------- ----- -- - ------------- ----- ---- - - -- -- -- -- -- ----- ---- - - ----- --------- -- - -- -- -- - - -- ----- ------ - ----------------- ----- ------ -------------------- -- - -- -- -- -- ------------- --------- -- - -- -- -- - - -展开代码
- 自定义的可枚举属性会根据所在对象原型链上的可枚举属性是否被省略而被保留或丢弃
在早期的版本中,在处理原型链上的对象时,不会将具有相同名称的属性合并为单个属性。在 ES2020 中,会根据所在对象原型上的属性是否被省略而被保留或丢弃。
-- -------------------- ---- ------- ----- ---- - - -- -- -- -- --------------- -------- -- ----- ---- - ------------------- - -- - ------ -- ----------- ---- -- -- - ------ -- ----------- ----- - --- ----- ------ - ----------------- ------ -------------------- -- - -- -- -- -- -- - -展开代码
以上便是 Object.assign() 在ES2020 的三个改进点,使用起来也非常简单和直观。拓展使用 Object.assign() 的场景。当你有一个很多级属性的对象,需要把它的所有属性传递到一个新的对象中时,Object.assign() 是一个良好的选择。
总之,这些改进非常实用,尤其是深度拷贝,在日常开发中可以减少很多工作量,希望能够在你的项目中带来性能的提升和使用的便利性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b70ef9306f20b3a63a9caf