Object.assign 在 ES2015 和 ES2016 的深入洞察

阅读时长 3 分钟读完

Object.assign 在 ES2015 和 ES2016 的深入洞察

在 ES2015 中,Object.assign 是一个非常有用的特性,它可以将多个对象的属性合并到一个对象中。这个特性的用途主要有两个:对象属性的克隆和对象属性的合并。

对象属性的克隆

在 ES2015 中,我们经常使用 Object.assign 来实现对象属性的克隆。下面是一个示例代码:

在上面的代码中,我们使用 Object.assign 来创建了一个新对象 cloneObj,它继承自 obj,并且拥有 obj 中的属性。这个新对象和原对象是完全独立的,修改 cloneObj 不会对 obj 产生影响。

对象属性的合并

在 ES2015 中,我们也经常使用 Object.assign 来实现对象属性的合并。下面是一个示例代码:

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

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

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

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

在上面的代码中,我们使用 Object.assign 来创建一个新对象 mergeObj,并将 obj1 和 obj2 中的属性合并到 mergeObj 中。如果 obj1 和 obj2 中有相同属性名,则 obj2 中的属性会覆盖 obj1 中的属性。

ES2016 中的扩展

在 ES2016 中,Object.assign 又有了新的扩展:可以合并 Symbol 类型的属性。Symbol 是 JavaScript 中的一种原始数据类型,用来表示唯一的标识符。下面是一个示例代码:

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

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

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

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

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

在上面的代码中,我们使用 Symbol 类型的属性来测试 Object.assign 是否支持 Symbol 了。可以看到,Object.assign 正确地将 Symbol 类型的属性合并到了新对象中。

总结

Object.assign 是一个非常有用的特性,它可以用来实现对象属性的克隆和合并。在 ES2016 中,Object.assign 又有了新的扩展:支持合并 Symbol 类型的属性。Object.assign 的使用十分简单,但是要注意深度克隆的问题,也要注意在合并对象时的属性覆盖问题。合适地使用 Object.assign 可以让你的代码更简洁、更优雅。

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

纠错
反馈