原始类型 vs. 对象实践应用

news2024/10/5 13:47:26

● 首先是原始类型的例子

let lastName = 'Williams';
let oldLastName = lastName;
lastName = 'Davis';
console.log(lastName.oldLastName);

● 然后是对象的例子

const jessica = {
  firstName: 'Jessica',
  lastName: 'Williams',
  age: 27,
};
const marriedJessica = jessica;
marriedJessica.lastName = 'Davis';
console.log('Before marriage:',jessica);
console.log('After marriage:',marriedJessica);

这两个输出已经再上个文章中详细解释了,就不再做赘述了
● 如何复制一个对象?

const jessica2 = {
  firstName: 'Jessica',
  lastName: 'Williams',
  age: 27,
};

const jessicaCopy = Object.assign({}, jessica2);
console.log(jessicaCopy);

在这里插入图片描述

Object.assign()方法的复制特性如下:

  1. 浅复制:Object.assign()方法执行的是浅复制,即只复制对象的引用而不是复制对象本身。如果源对象的属性值是对象或数组,则目标对象中的对应属性也将指向相同的对象。
  2. 多个源对象:可以传递多个源对象给Object.assign()方法,它们的属性将按照参数顺序依次复制到目标对象中。
  3. 覆盖属性:如果目标对象和源对象具有相同的属性名,则源对象的属性将覆盖目标对象的属性。
  4. 仅复制可枚举属性:只会复制源对象的可枚举属性到目标对象中。不可枚举属性、原型链上的属性以及方法都不会被复制。
  5. 返回目标对象:Object.assign()方法返回的是目标对象本身,即复制后的目标对象。
    需要注意的是,Object.assign()方法并不会复制对象的原型链,它只会复制对象自身的属性。如果需要深度复制对象及其属性,可以使用其他方法或库,如递归地进行对象复制或使用深拷贝函数。

当使用Object.assign()方法进行对象属性复制时,请注意该方法执行的是浅复制。这意味着如果源对象的属性值是对象或数组,目标对象中的对应属性也将指向相同的对象。我将通过一个例子来说明这个特性。

javascriptCopy Codeconst source = {
  a: {
    b: 1
  },
  c: [2, 3, 4]
};

const target = {};

Object.assign(target, source);

console.log(source); // { a: { b: 1 }, c: [ 2, 3, 4 ] }
console.log(target); // { a: { b: 1 }, c: [ 2, 3, 4 ] }

// 修改源对象的属性
source.a.b = 5;
source.c.push(6);

console.log(source); // { a: { b: 5 }, c: [ 2, 3, 4, 6 ] }
console.log(target); // { a: { b: 5 }, c: [ 2, 3, 4, 6 ] }

在上面的例子中,source对象包含一个属性a和一个属性c,它们分别是一个对象和一个数组。然后,我们使用Object.assign()方法将source对象的属性复制到target对象中。
可以看到,target对象中的a属性和c属性与source对象中的相应属性相同。但是,值得注意的是,a属性和c属性都是指向相同的对象和数组,而不是独立的副本。因此,当我们修改source对象的属性时,相应的属性也会在target对象中进行修改。
如果需要实现深度复制,即每个属性都是独立的副本而不仅仅是引用,那么需要使用其他深拷贝的方法,例如递归地复制对象的所有属性或使用专门的深拷贝函数。

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

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

相关文章

docker部署phpIPAM

0说明 IPAM:IP地址管理系统 IP地址管理(IPAM)是指的一种方法IP扫描,IP地址跟踪和管理与网络相关的信息的互联网协议地址空间和IPAM系统。 IPAM软件和IP的工具,管理员可以确保分配IP地址仍然是当前和足够的库存先进的IP工具和IPAM服务。 IPAM简化并自动化…

2023.11.25-istio安全

目录 文章目录 目录本节实战1、安全概述2、证书签发流程1.签发证书2.身份认证 3、认证1.对等认证a.默认的宽容模式b.全局严格 mTLS 模式c.命名空间级别策略d.为每个工作负载启用双向 TLS 2.请求认证a.JWK 与 JWKS 概述b.配置 JWT 终端用户认证c.设置强制认证规则 关于我最后 本…

居家适老化设计第三十条---卫生间之坐便

以上产品图片均来源于淘宝 侵权联系删除 在居家适老化中,马桶是非常重要的设施之一,它能够提供方便、安全、舒适的上厕所体验。以下是一些居家适老化中常见的马桶设计和功能:1. 高度合适:为了方便老年人坐起和站起,马…

js逆向-JS加密破解

一、常见五种js加密手段 (一)加密位置: 1.Request Payload 加密 2.Request Headers 加密 3.Request URL params 参数加密 4.Response Data 数据加密 5.JS代码混淆加密 (二)加密算法 base64 编码 哈希算法&…

【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 重点放前面&am…

常见树种(贵州省):017柳树、喜树、珙桐、木棉、楝、枫杨、竹柏、百日青、翅荚香槐、皂荚、灯台树

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、柳树 …

Ubuntu服务器/工作站常见故障修复记录

日常写代码写方案文档,偶尔遇上服务器出现问题的时候,也需要充当一把运维工程师,此帖用来记录服务器报错的一些解决方案,仅供参考! 文章目录 一、服务器简介二、机箱拆解三、基本操作3.1 F2进入BIOS3.2 F12进入Boot Me…

sql 动态语句

批量删除用的 foreach

剑指offer(C++)-JZ43:整数中1出现的次数(算法-其他)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数 例如&#xff0…

Spring原理——基于xml配置文件创建IOC容器的过程

Spring框架的核心之一是IOC,那么我们是怎么创建出来的Bean呢? 作者进行了简单的总结,希望能对你有所帮助。 IOC的创建并不是通过new而是利用了java的反射机制,利用了newInstance方法进行的创建对象。 首先,我们先定义…

医学检验(LIS)管理系统源码,LIS源码,云LIS系统源码

医学检验(LIS)管理系统源码,云LIS系统全套商业源码 随着全自动生化分析仪、全自动免疫分析仪和全自动血球计数器等仪器的使用,检验科的大多数项目实现了全自动化分析。全自动化分析引入后,组合化验增多,更好的满足了临床需要&…

抵御网络威胁的虚拟盾牌:威胁建模

威胁建模是一个允许您管理因日益复杂且不断变化的 IT 安全威胁而产生的风险的过程。为了保护敏感系统和数据,主动了解和应对这些威胁至关重要。 威胁建模是识别、评估和减轻这些威胁的关键过程,确保组织准备好面对不断出现的新的复杂挑战。 本文将详细…

RTL8762x芯片避坑总结之1——用GPIO模拟I2C

1. 使用GPIO模拟I2C: 1.1 按常规逻辑 在输出第1个数据,切换为输入读取ACK后,切回输出无效,不能输出数据: 1.2 在切换输入输出前,需要对Pad重新进行配置 重新配置后,输入输出切换成功&#xf…

笔记本电脑可以投屏到电视吗?Win、Mac、Linux分别怎么投屏?

如果你的电视是安卓电视,那么答案是:完全可以! 不管你的笔记本电脑是Windows系统、macOS系统还是Linux系统,你都可以借助AirDroid Cast的电脑客户端或网页版,将电脑屏幕投屏到安卓智能电视上。 首先,你需要…

数据链路层-以太网协议

目录 数据链路层的作用认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对UDP协议的影响MTU对TCP协议的影响数据跨网络传输的过程ARP协议ARP协议作用ARP数据报的格式ARP协议的工作流程 数据链路层的作用 我们知道数据能在网络中从一台主机发送到另一台主机…

【Proteus仿真】【STM32单片机】智能垃圾桶设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用报警模块、LCD1602液晶模块、按键模块、人体红外传感器、HCSR04超声波、有害气体传感器、SG90舵机等。 主要功能: 系统运行后&…

极智项目 | 实战实时、多人2D人体姿态识别之OpenPose

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍 实战实时、多人2D人体姿态识别之OpenPose。 本文介绍的 实战实时、多人2D人体姿态识别之OpenPose,提供完整的可以一键执行的项目工程源码&…

android实战项目之二十二---如何快速APP中集成支付宝和微信支付功能

效果图 实现方案 jcenter 集成方式 implementation com.xgr.easypay:EasyPay:2.0.5 // 基类库,必选 implementation com.xgr.easypay:wechatpay:2.0.5 // 微信支付,可选 implementation com.xgr.easypay:alipay:2.0.5 // 支付宝支付,可…

2023亚马逊云科技re:Invent引领科技新潮流:云计算与生成式AI共塑未来

2023亚马逊云科技re:Invent引领科技新潮流:云计算与生成式AI共塑未来 历年来,亚马逊云科技re:Invent,不仅是全球云计算从业者的年度狂欢,更是全球云计算领域每年创新发布的关键节点。 2023年亚马逊云科技re:Invent大会在美国拉斯…

C语言算术转换例题

这里写目录标题 例题一题目解析答案 例题二题目解析答案 例题三题目解析答案 例题四方法一解析方法二解析 例题五答案方法一方法二解析 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸&#…