熟练使用 ES9 的 Object Rest/Spread 属性扩展运算符
在前端开发中,经常会面临需要复制或者合并对象的问题。在 ES9 中引入了 Object Rest/Spread 属性扩展运算符,可以轻松地实现对象的复制和合并过程。
Object Rest/Spread 属性扩展运算符非常强大,它可以将一个对象的所有可枚举属性拷贝到另一个对象中,并且可以方便地进行对象属性的覆盖和添加。
如何使用 Object Rest/Spread 属性扩展运算符?
首先,让我们看一下如何使用 Object Rest/Spread 属性扩展运算符将一个对象复制到另一个对象中:
let obj1 = { a: 1, b: 2, c: 3 }; let obj2 = { ...obj1 }; console.log(obj2); // {a: 1, b: 2, c: 3}
上面的代码中,我们使用了 Object Rest/Spread 属性扩展运算符将 obj1 中的所有属性都复制到了 obj2 中,这样就实现了对象的复制。
接下来,让我们看一下如何使用 Object Rest/Spread 属性扩展运算符来合并对象:
let obj1 = { a: 1, b: 2 }; let obj2 = { c: 3, d: 4 }; let obj3 = { ...obj1, ...obj2 }; console.log(obj3); // {a: 1, b: 2, c: 3, d: 4}
上面的代码中,我们使用了 Object Rest/Spread 属性扩展运算符将 obj1 和 obj2 中的所有属性都合并到了 obj3 中,这样就实现了对象的合并。
那么,如果想要将对象的某些属性覆盖掉,又该怎么办呢?其实很简单,只需要在后面再添加一些属性即可:
let obj1 = { a: 1, b: 2 }; let obj2 = { a: 3, c: 4 }; let obj3 = { ...obj1, ...obj2, d: 5 }; console.log(obj3); // {a: 3, b: 2, c: 4, d: 5}
上面的代码中,我们将 obj2 中的属性 a 覆盖掉了 obj1 中的属性 a,并且还添加了一个新的属性 d。
值得注意的是,如果 obj2 中的属性名称与 obj1 中的重复,那么 obj2 中的属性会覆盖掉 obj1 中的属性。如果有多个对象中有相同的属性名,则后面的属性会覆盖前面的属性。
总结一下,Object Rest/Spread 属性扩展运算符非常方便实用,可以轻松实现对象的复制、合并和属性覆盖等操作,是前端开发中必须掌握的技能之一。
完整的示例代码如下:
-- -------------------- ---- ------- -- ---- --- ---- - - -- -- -- -- -- - -- --- ---- - - ------- -- ------------------ -- --- -- -- -- -- -- -- ---- --- ---- - - -- -- -- - -- --- ---- - - -- -- -- - -- --- ---- - - -------- ------- -- ------------------ -- --- -- -- -- -- -- -- -- -- ------ --- ---- - - -- -- -- - -- --- ---- - - -- -- -- - -- --- ---- - - -------- -------- -- - -- ------------------ -- --- -- -- -- -- -- -- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6492e30f48841e98940af3e8