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() 注意事项
- Object.assign() 是浅拷贝,如果源对象的属性是一个对象或数组,拷贝结果只是它们的引用。
- undefined 和 null 类型不能作为目标对象。
- Object.assign() 只拷贝源对象的自有属性,也就是不包括继承属性。
总结
Object.assign() 是一个非常实用的方法,它可以实现对象的复制、合并、更新等操作。在实践中,需要根据具体场景,综合考虑使用 Object.assign() 的注意事项,充分利用它提供的功能,提高开发效率。
参考文献
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6469b89c968c7c53b098f2d9