ES6 中的 Object.assign() 方法及其使用技巧

阅读时长 4 分钟读完

Object.assign() 是 ES6 新增的方法,可用于将源对象的所有可枚举属性复制到一个目标对象中。本文将深入解析 Object.assign() 的使用技巧,并提供详细的示例代码。

Object.assign() 基本语法

  • target:目标对象
  • sources:一个或多个源对象

Object.assign() 拷贝属性

Object.assign() 可以将源对象的所有可枚举属性复制到目标对象。如果目标对象中已经有同名属性了,那么将被覆盖。对于字面量对象,使用 Object.assign() 可以实现浅拷贝。

Object.assign() 拷贝 Getters 和 Setters

Object.assign() 只拷贝源对象中的可枚举属性,即不包括 get 和 set 方法。如果想把 getter 和 setter 方法也拷贝到目标对象,需要使用 Object.getOwnPropertyDescriptors() 方法。

-- -------------------- ---- -------
----- ------ - -
  --- --- -
    ------ --
  -
--

----- ------ - ---

------------------------------- ------------------------------------------

---------------------- -- -

Object.assign() 拷贝 Symbol 类型属性

Object.assign() 可以拷贝 Symbol 类型属性,但是只拷贝可枚举的 Symbol 属性。

-- -------------------- ---- -------
----- ------ - -
  ------------------ --
  -- -
--

----- ------ - ---

--------------------- --------

-------------------- -- --- -- ------------ --

使用 Object.assign() 合并对象

使用 Object.assign() 可以合并多个对象,将它们的属性合并到一个目标对象中。

使用 Object.assign() 更新对象

使用 Object.assign() 可以轻松地更新对象的属性。

-- -------------------- ---- -------
----- ------ - -
  -- --
  -- --
  -- -
--

----- ------- - ----------------- ------- -
  -- --
  -- -
---

--------------------- -- --- -- -- -- -- --

使用 Object.assign() 克隆对象

使用 Object.assign() 可以克隆一个新的对象。

Object.assign() 注意事项

  1. Object.assign() 是浅拷贝,如果源对象的属性是一个对象或数组,拷贝结果只是它们的引用。
  2. undefined 和 null 类型不能作为目标对象。
  3. Object.assign() 只拷贝源对象的自有属性,也就是不包括继承属性。

总结

Object.assign() 是一个非常实用的方法,它可以实现对象的复制、合并、更新等操作。在实践中,需要根据具体场景,综合考虑使用 Object.assign() 的注意事项,充分利用它提供的功能,提高开发效率。

参考文献

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6469b89c968c7c53b098f2d9

纠错
反馈