热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

被覆_#yyds干货盘点#Object.assign的使用

在查看某框架的源码时,发现有大量使用了Object.assign方法,参考看mdn现出浅的研究一下,如下




在查看某框架的源码时,发现有大量使用了Object.assign方法,参考看mdn现出浅的研究一下,如下:

1.语法

/**
* Object.assign(target, ...sources)
* 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象
* target: 目标对象
* sources: 源对象
* 返回值: 目标对象
* 描述: 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性
*/

2.代码

const target =
a: 1,
b: 2
;
const source =
b: 4, // 注意: 此处有一个重复的key, 重复的key会覆盖被覆盖
c: 5
;
const returnedTarget = Object.assign(target, source);
console.log(target);
// expected output: Object a: 1, b: 4, c: 5
console.log(returnedTarget);
// expected output: Object a: 1, b: 4, c: 5

注意: 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖

3.复制对象

const obj = a: 1 ;
const copy = Object.assign(, obj);
console.log(copy); // a: 1

注意: 针对深拷贝,需要使用其他办法,因为 Object.assign()拷贝的是(可枚举)属性值, 假如源值是一个对象的引用,它仅仅会复制其引用值

4.合并一个对象

const o1 = a: 1 ;
const o2 = b: 2 ;
const o3 = c: 3 ;
const obj = Object.assign(o1, o2, o3);
console.log(obj); // a: 1, b: 2, c: 3
console.log(o1); // a: 1, b: 2, c: 3 , 注意目标对象自身也会改变。
console.log(obj === o1); // true 说明是同一个对象

注意: obj 和 o1 是同一个对象。target: 目标对象 ,返回值: 目标对象

5.合并具有相同属性的对象

const o1 = a: 1, b: 1, c: 1 ;
const o2 = b: 2, c: 2 ;
const o3 = c: 3 ;
const obj = Object.assign(, o1, o2, o3);
console.log(obj); // a: 1, b: 2, c: 3 会覆盖掉相同的属性值

6.总结

  • 拷贝对象时是浅拷贝
  • 第一个参数对象和返回值是同一个对象
  • 后面的key值会覆盖掉前面的key值

以上是关于#yyds干货盘点#Object.assign的使用的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#three.js源码解读-EventDispatcher

#yyds干货盘点# 泛型通配符

#yyds干货盘点#C++ static

#yyds干货盘点# 数字序列

#yyds干货盘点#异或操作

#yyds干货盘点#二分查找算法


推荐阅读
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文探讨了在 APICloud 平台使用 execScript 方法时如何正确传递对象参数,并提供了详细的示例和解释。 ... [详细]
  • 本文详细介绍了如何在Java Swing中使用`JButton.registerKeyboardAction()`方法来为按钮设置键盘快捷键,并提供了多个实用的代码示例。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
author-avatar
加乘ACCA财务英语教室_438
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有