前言
ES9中引入了Rest/Spread Properties语法,可以更方便地操作对象。本文将详细介绍如何使用该语法及其有关特性,并通过示例代码演示实际应用场景,帮助读者更好地理解和掌握其使用方法。
一、Rest properties
在ES6中,通过使用Rest参数,可以将函数传递的实参以数组的形式进行捕获。在ES9中,这种语法被引入到对象中,称为Rest properties。即可以使用Rest语法在对象中去除一个或多个属性,并将其收集到一个新的对象中。
例如,我们有一个对象:
const person = { name: 'Tom', age: 18, city: 'Beijing', gender: 'male' }
如果我们只需要 name 和 age,可以用Rest properties来实现:
const { city, gender, ...info } = person; console.log(info); // { name: 'Tom', age: 18 } console.log(city); // 'Beijing' console.log(gender); // 'male'
通过上述代码,我们将 city 和 gender 剔除出 person 对象,同时将剩余的属性赋值给一个名为 info 的新对象。这种语法的优点是可以更快、更简单地创建一个不包括某些属性的新对象,从而避免了使用 Object.assign 方法,代码更加清晰。
二、Spread properties
除了Rest properties,ES9中还引入了Spread properties语法。这种语法也非常实用,可以将一个对象的属性拷贝到另一个对象中。例如:
-- -------------------- ---- ------- ----- ------ - - ----- ------ ---- -- - ----- ---- - - ---------- ----- ---------- ------- ------ - ------------------ -- - ----- ------ ---- --- ----- ---------- ------- ------ -
通过 Spread properties,我们将 person 对象的属性快速地复制到新对象 info 中。需要注意的是,如果对象 A 和 B 存在相同的属性,则使用 Spread properties 后,对象 B 的属性会覆盖对象 A 的属性。
三、结合使用Rest和Spread properties
除了单独使用Rest和Spread properties,它们也可以结合使用以实现更强大的功能。例如,我们可以使用这种语法从对象中删除一个或多个属性,同时创建一个新对象并将这些属性复制到新对象中。例如:
-- -------------------- ---- ------- ----- ------ - - ----- ------ ---- --- ----- ---------- ------- ------ - ----- - ----- ------- ------- - - ------- ----- ------ - - -------- --------- ---------- - -------------------- -- - ----- ------ ---- --- --------- ---------- -
上述代码中,我们使用Rest properties去除 person 对象中的 city 和 gender 属性,然后使用Spread properties将剩余的属性拷贝到新对象 result 中,同时增加一个hometown属性。
总结
本文介绍了ES9中Rest/Spread Properties语法的使用方法,并通过实例代码阐述了其有关特性。 使用Rest properties可以快速创建一个不包括某些属性的新对象,使用Spread properties可以将一个对象的属性拷贝到另一个对象中。这两种语法的结合使用,更能体现出它们的优势。相信在实际开发中,读者能够更好地应用这些语法来提高代码效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64eaf12ff6b2d6eab35a77c2