JS-10-es6常用知识-对象扩展

目录

1  Object.assign:实现拷贝继承

2 扩展运算符(...)

1)介绍

2)数组中的扩展运算符

3)对象中的扩展运算符


1  Object.assign:实现拷贝继承

1)目的:Object.assign()方法在 JavaScript 中被用来复制一个或多个源对象的所有可枚举的自有属性到目标对象。

2)返回值:目标对象target。

3)注意:Object.assign() 执行的是浅拷贝(shallow copy),而不是深拷贝deep copy这意味着如果源对象的属性值是一个对象或数组,那么目标对象将获得该对象或数组的引用,而不是它的一个全新副本。

4)基本用法

Object.assign ( target , source ) ;

newObj、newObj2都是通过源对象浅拷贝得到的一个目标对象

<script>//Object.assign 就是进行对象的浅拷贝var source = { age: 18, height: 170, className: "3年2班" }//克隆一个新对象出来// 写法1var newObj = Object.assign({}, source);console.log(newObj);// 写法2var newObj2 = {};Object.assign(newObj2, source);console.log(newObj2);
</script>

2 扩展运算符(...)

1)介绍

    ES6(ECMAScript 2015)引入了许多新特性,其中之一就是扩展运算符(spread operator),也被称为三点运算符(...)。扩展运算符在数组和对象上都可以使用,但用法和效果略有不同。

2)数组中的扩展运算符

主要用于复制数组、合并数组或用于函数参数展开

复制数组

let arr1 = [1, 2, 3];  
let arr2 = [...arr1]; // arr2 现在也是 [1, 2, 3]

合并数组

let arr1 = [1, 2, 3];  
let arr2 = [4, 5, 6];  
let arr3 = [...arr1, ...arr2]; // arr3 是 [1, 2, 3, 4, 5, 6]

函数参数展开

function add(a, b, c) {  return a + b + c;  
}  let numbers = [1, 2, 3];  
add(...numbers); // 相当于 add(1, 2, 3),返回 6

3)对象中的扩展运算符

主要用于复制对象和合并对象

复制对象:在复制对象的同时,还可以修改对象的属性值或者添加属性

let obj1 = { a: 1, b: 2 };  
let obj2 = { ...obj1 }; // obj2 现在也是 { a: 1, b: 2 }
let obj3 = { ...obj1 , b: 3 };  //obj3 是 { a: 1, b: 3 }

合并对象:合并对象,若存在属性名相同,同后面的属性值覆盖前面的

let obj1 = { a: 1, b: 2 };  
let obj2 = { b: 3, c: 4 };  
let obj3 = { ...obj1, ...obj2 }; // obj3 是 { a: 1, b: 3, c: 4 }  
// 注意:如果属性名相同,后面的对象会覆盖前面的对象中的同名属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter开发效率提升1000%,Flutter Quick教程之定义构造参数和State成员变量

一个Flutter页面&#xff0c;可以定义页面构造参数和State成员变量。所谓页面构造参数&#xff0c;就是当前页面构造函数里面的参数。 比如下面代码&#xff0c;a就是构造参数&#xff0c;a1就是State成员变量。 class Testpage extends StatefulWidget {String a;const Test…

Python的文件管理

读取文件 首先我们可以先创建一个工程项目&#xff0c;如图所示&#xff1a; 打开我们名为1.读取文件.py的python文件&#xff0c;然后我们可以写下读取Python文件的代码&#xff0c;代码如下&#xff1a; f open("1.txt", "r") print(f.read()) f.clos…

【PB案例学习笔记】-14使用次数和日期限制

写在前面 这是PB案例学习笔记系列文章的第14篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

【工具】探索 ARPU:平均每用户收入

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 什么是 ARP…

UE5.1_常用快捷键

UE5.1_常用快捷键 shift1&#xff0c;&#xff0c;模式选择 shift2&#xff0c;&#xff0c;模式选择 shift3&#xff0c;&#xff0c;模式选择 shift4&#xff0c;&#xff0c;模式选择 shift5&#xff0c;&#xff0c;模式选择 shift6&#xff0c;&#xff0c;模式选择 …

2.3Docker部署java工程

2.3Docker部署java工程 1.导入jar包 2.在Docker部署jdk&#xff08;容器名为myjdk17&#xff09; 3.修改jar包名 mv 原包名 新包名4. 配置启动脚本 Dockerfile是一个文本文件&#xff0c;其中包含了构建 Docker 镜像所需的一系列步骤和指令。通过编写 Dockerfile 文件&…

Adversarial Nibbler挑战:与多元社区持续开展开放红队测试

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

RPG Maker MV角色战斗动画记录

角色战斗动画记录 角色战斗状态判断的语句赋值 战斗管理战斗精灵创建精灵进行角色的更新 角色战斗状态 角色的战斗状态是由 Game_Battler 类中的 _actionState 属性的字符串决定的&#xff0c;它有哪些值呢&#xff1f; undecided 未确定或者说是操作状态inputting 输入waiti…

QA 未能打开位于 D:/Computer999/Computer999.vbox 的虚拟电脑

前言 未能打开位于 xxx/Computer999.vbox 的虚拟电脑&#xff0c;并提示E_INVALIDARG (0X80070057)&#xff0c;是最常见的一个错误&#xff0c;下面是解决办法。 内容 1、提示下面的错误&#xff0c;注册Computer999失败&#xff1a; 未能打开位于 D:/Computer999/Compute…

K210视觉识别模块学习笔记1:第一个串口程序_程序烧录与开机启动

今日开始学习K210视觉识别模块:简单的认识与串口程序 亚博智能的K210视觉识别模块...... 固件库版本: canmv_yahboom_v2.1.1.bin 既然K210作为一个视觉识别外设模块来使用&#xff0c;我认为第一个程序 就没必要学点灯之类的了&#xff0c;直接学习串口如何配置开始为妥&…

ctfshow-web入门-爆破(web21-web24)

目录 1、web21 2、web22 3、web23 4、web24 1、web21 爆破什么的&#xff0c;都是基操 需要认证才能访问 随便输一个用户名和密码抓包看看&#xff1a; 多出来一个认证的头 Authorization: Basic YWRtaW46MTIzNDU2 base64 解码看看&#xff1a; 就是我们刚才输入的用于测…

C语言 | Leetcode C语言题解之第127题单词接龙

题目&#xff1a; 题解&#xff1a; struct Trie {int ch[27];int val; } trie[50001];int size, nodeNum;void insert(char* s, int num) {int sSize strlen(s), add 0;for (int i 0; i < sSize; i) {int x s[i] - ;if (trie[add].ch[x] 0) {trie[add].ch[x] size;m…

计算机系统结构之FORK和JOIN

程序语言中用FORK语句派生并行任务&#xff0c;用JOIN语句对多个并发任务汇合。 FORK语句的形式为FORK m&#xff0c;其中m为新领程开始的标号。 JOIN语句的形式为JOIN n&#xff0c;其中n为并发进程的个数。 例1&#xff1a;给定算术表达式ZEA*B*C/DF经并行编译得到如下程序…

刘强东的简历很拉风!

正式宣布&#xff1a;GPT 4o 在国内直接使用 ~ 来看一下江湖人称“东哥”刘强东的简历&#xff0c;大佬确实很拉风&#xff1a; 刘强东&#xff0c;京东的创始人&#xff0c;是中国互联网行业的传奇人物。他的故事充满了奋斗和创新&#xff0c;以下是我对他简历的一些看法&…

Vitis HLS 学习笔记--HLS流水线类型

目录 1. 简介 2. 优缺点对比 2.1 Stalled Pipeline 2.2 Free-Running/Flushable Pipeline 2.3 Flushable Pipeline 3. 设置方法 4. FRP的特殊优势 5. 总结 1. 简介 Vitis HLS 会自动选择正确的流水线样式&#xff0c;用于流水打拍函数或循环。 停滞的流水线&#xff…

K8S SWCK SkyWalking全链路跟踪工具安装

官方参考&#xff1a;如何使用java探针注入器? 配置两个demo&#xff0c;建立调用关系&#xff0c; 首先创建一个基础镜像dockerfile from centos 先安装java 参考: linux rpm方式安装java JAVA_HOME/usr/java/jdk1.8.0-x64 CLASSPATH.:$JAVA_HOME/lib/tools.jar PATH…

了解Maven,并配置国内源

目录 1.了解Maven 1.1什么是Maven 1.2快速创建一个Maven项⽬ 1.3Maven 核⼼功能 1.3.1项⽬构建 1.3.2依赖管理 1.4Maven Help插件 2.Maven 仓库 2.1中央仓库 2.2本地仓库 3.Maven 设置国内源 1.查看配置⽂件的地址 2.配置国内源 3.设置新项⽬的setting 1.了解Ma…

Hive安装-内嵌模式

1.官网下在hive3.1.2版本 Index of /dist/hive/hive-3.1.2 2.上传到master节点的/opt/software目录下 3.解压到/opt/module目录下 tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/ 检查解压后文件 4.修改名字 改为hive cd /opt/module mv apache-hive-3.1.2-bin…

期权的时间价值是什么?和期权内在价值有啥不同?

今天带你了解期权的时间价值是什么&#xff1f;和期权内在价值有啥不同&#xff1f;期权的内在价值&#xff0c;是指期权立即执行产生的经济价值。 期权的时间价值是什么&#xff1f; 期权的时间价值是期权价格的一个重要组成部分&#xff0c;也被称为期权的外在价值。它是指期…

【再探】设计模式—备忘录模式与解释器模式

备忘录模式是用于保存对象在某个时刻的状态&#xff0c;来实现撤销操作。而解释器模式则是将文本按照定义的文法规则解析成对应的命令。 1 备忘录模式 需求&#xff1a;保存对象在某个时刻的状态&#xff0c;后面可以对该对象实行撤销操作。 1.1 备忘录模式介绍 提供一种状…