前端小技巧: TS实现深拷贝函数,考虑 Map, Set, 循环引用

JS与TS中引用类型(如对象和数组)带来的一些常见问题及其解决方法,以及深拷贝与浅拷贝的区别 因此,浅拷贝后的新对象和原对象共享同一个引用类型的子对象。在上述例子中,`shallowCopy` 对象和 `original` 对象的 `b` 属性指向同一个对象。在上述例子中,`deepCopy` 对象和 `original` 对象完全独立,修改 `deepCopy.b` 不会影响 `original.b`。了解深拷贝和浅拷贝的区别,有助于在编程中选择合适的拷贝方式,避免数据共享带来的副作用和潜在的错误。- **浅拷贝**:对于不需要深层次复制的情况,可以使用浅拷贝。 阅读详情

写一个深拷贝函数

  • 使用 JSON.stringify 和 parse 这类只能适合数据结构简单的,不能循环引用的,没有function的

  • 普通深拷贝

    • 只考虑 Object Array

    • 无法转换 Map Set 和 循环引用

      function cloneDeep(obj: any) {
             
             
        if (typeof obj !== 'object' || !obj) return obj
        const result = obj instanceof Array ? [] : {
             
             }
        for (let key  in obj) {
             
             
          if (obj.hasOwnProperty(key)) {
             
             
            result[key] = cloneDeep(obj[key]) // 递归调用
          }
        }
        return result
      }
      
      // 不支持的场景
      const a: 
3天搞定前端面试八股文:高频考点+手写题全梳理 前端面试的竞争核心已从背答案转向对技术原理的实质理解,尤其围绕JavaScript事件循环、闭包、原型链等基础知识,以及Vue/React框架的响应式与diff设计。理解这些基础原理,不仅有助于回答面试官的高频追问,更能在工程实践中指导性能优化、缓存策略和组件设计。实际业务中,无论是处理搜索防抖、首屏渲染,还是解决跨域与安全问题,背后都依赖这些核心知识。基于2026年最新面试趋势,系统梳理了从JS手写题(防抖、节流、深拷贝、Promise)到浏览器缓存、HTTP字段、前端工程化及安全防护的完整考点图谱,并给 阅读详情

相关推荐

前端面试进阶路线:一年半经验如何系统备战与突破

前端面试的考察重点随经验阶段而变化,对于一年半经验的开发者而言,面试官不再满足于基础API的调用,而是更关注对原理的深入理解与工程实践的沉淀。从浏览器渲染机制、事件循环到React的Fiber架构与Hooks原理,再到微前端、性能优化等热点方向,面试的本质是检验候选人是否具备“知其然更知其所以然”的技术素养。同时,项目深挖与场景题成为区分度最高的环节,如何把业务需求转化为技术方案、如何用数据量化优化成果,都是面试官评判工程能力的核心依据。从手写代码到算法刷题,再到面试复盘与心态管理,系统化的备战策略能显著提

weixin_33875564的博客 1120

美图前端面试全流程复盘:基础原理、React优化与项目实战

前端面试中,事件循环与闭包是绕不开的基础考点,它们决定了异步编程和状态管理的正确性。理解宏任务与微任务的执行顺序,掌握闭包对作用域与内存的影响,是构建高性能应用的前提。而浏览器缓存机制则直接影响页面加载速度与用户体验,是性能优化的重要环节。从这些基础概念出发,结合图片懒加载、React渲染优化、防抖节流等实战技术,能够有效提升前端工程能力。本文完整复盘美图前端面试的考察脉络,从事件循环讲到项目架构,帮助读者深入理解每个问题背后的设计意图。

weixin_34059951的博客 472

前端工程师如何用TypeScript零成本切入Agent开发

Agent开发本质上是状态管理、异步流程编排与上下文感知的工程实践,其核心范式与前端开发高度同源。从React的render-loop到Agent的plan-act-observe循环,从Zustand状态同步到memory持久化设计,从useEffect副作用控制到tool calling的触发与响应,技术原理一脉相承。TypeScript凭借强类型接口、编译期校验与IDE智能推导,已成为现代Agent工具链的事实标准——Vercel AI SDK、LangChain.js及Hermes Agent均原生

mybwu_com的专栏 456

deep-copy-ts:用于TypeScript的Deep-copy实用程序功能

深度复制 基于TypeScript的Deep-copy(aka克隆)实用程序功能。 在探索。 安装 npm i deep-copy-ts 用法 import { deepCopy } from "deep-copy-ts" ; const obj = { // Primitive value a : 1 , b : "b" , c : { a : [ { a : "caa1" } , { a : "caa2" } ] , } , d : null , e : undefined , f : true , // Reference value g : [ 1 , 2 , 3 ] , h : ( ) => { return "h" ; } , i : { a : 1 , b : "i.b" , c :

deep-copy-ts:typescriptjavascript的递归深拷贝、克隆和浅拷贝函数

深拷贝-ts 用于 typescript/javascript 的递归深拷贝、克隆和浅拷贝函数 基于 MIT 和 LGPL 许可证可用。

【3D目标检测】MMdetection3d——搭建IS-Fusion环境+nuScenes数据集训练

搭建IS-Fusion环境+nuScenes数据集训练

qq_44703886的博客 2324

电源完整性之Cadence Sigrity Power SI_AC阻抗仿真

之前和大家分享过电源完整性之仿真设计原理链接: [link](https://blog.youkuaiyun.com/weixin_41808082/article/details/117065140?spm=1001.2014.3001.5501).今天接着上一篇文章总结一下电源AC阻抗的的仿真操作流程及一些simulation中的设置参数,用到的时候Cadence Sigrity 中的Power SI组件,下面开始享受仿真的快乐吧: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的Power SI

刘小同学的博客 1万+

三态门Multisim电路仿真——硬件工程师笔记

三态门原理及应用摘要 三态门是具有高电平(1)、低电平(0)和高阻态(Z)三种输出的逻辑电路,通过使能端(EN)控制状态切换。高阻态时输出端等效断路,避免信号冲突。其核心应用包括: 总线系统:多设备共享总线时,仅使能选中设备的三态门,其余保持高阻态,防止干扰。 数据选择器:利用三态门切换多路输入信号,简化电路设计。 实现方式分两种: TTL三态门(三极管构成):低电平使能有效,仿真验证输出逻辑与高阻态。 MOS三态门(MOS管构成):高电平使能有效,仿真显示使能信号控制输出状态。 文中还附硬件工程师笔试面试

XU157303764的博客 2013

YOLOv11改进 | Conv/卷积篇 | 轻量化多尺度异构卷积(MSHC)优化YOLOv11精度(全网独家首发)

本文介绍了Hype-YOLO提出的MANet结构,这是C3、C2f、C3k2的升级版,能显著增强特征提取能力。MANet整合了DSConv和C2f结构,通过多分支异构设计提升梯度流动和特征语义深度。文章详细解析了MSHC模块的原理,包括其多尺度并行建模、通道混洗等核心机制,并提供了完整的代码实现和训练教程。实验表明,Hype-YOLO的精度优于YOLOv11。该结构在保持轻量化的同时,通过异构分支设计实现了更丰富的特征表达,适用于目标检测等视觉任务。

Snu77的博客 956

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1072

几种在NCBI中查询获取目的基因序列的方法

几种在NCBI中查询获取目的基因序列的方法 在NCBI中,如何查询并下载获得某物种的某特定功能的基因序列,相信对于看到此篇的大部分同学来说都不陌生了。想到对于刚开始接触生信的同学们来说,也许尚不能很熟练地在NCBI中查询想要的基因序列,因此在这里简要作了一个总结,希望对初学生信的同学们有所帮助。 此篇博文源于此前有同学问我,提到他导师给他布置任务,查找相关的文献,看相关文献中都报道了哪些细菌物种能够产生聚羟基脂肪酸酯(polyhydroxyalkanoate ,PHA),参与合成该产物的基因都有哪些,然后在

qq_23435961的博客 1万+

LVGL v8学习笔记 | 09 - 进度条控件的使用方法(bar)

lv_bar_set_range必须放在lv_bar_set_mode前面,否则不生效。bar对象的API在lv_bar.h中声明,以lv_bar_xxx命名。此事件可以用来在进度条更新值之后更新别的控件(比如进度条旁边的文字)。可以看到,默认创建的进度条值是0到100。(3)设置进度条的范围值(最大值和最小值)(2)获取进度条的起始值。(3)获取进度条的最小值。(4)获取进度条的最大值。(1)设置进度条的当前值。(2)设置进度条的起始值。(1)获取进度条当前值。(5)获取进度条的模式。

Mculover666的博客(嵌入式) 1730

ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位

学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4785

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 前端小技巧: TS实现bind函数,call函数,以及apply函数
下一篇: 前端小技巧: TS实现new出一个对象的内部过程
Wang's Blog
博客等级 码龄12年 7438粉丝 2422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值