JavaScript 深度克隆-题

FIFO应用于UART串口(含代码) FIFO(First in first out)即先入先出,可以把它理解成一个缓存器,对于收发两端速度不一致,位宽不一致的情况可以使用FIFO作为收发两端中间的“调节剂”使数据可以进行正常发送。 阅读详情

JavaScript 实现克隆对象

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script type="text/javascript">
        // 题意:把一个已有对象(包括其属性,方法)克隆给另一个新对象。
        // 已有对象
        var obj = {
            name: "abc",
            age: 123,
            card: ['visa', 'master'],
            wife: {
                name: 'bcd',
                son: {
                    name: 'aaa'
                }
            }
        }
        // 新对象
        var obj1 = {

        }

        // 思路分析:
        // 遍历对象属性用for in循环
        // 1.判断原对象的属性是不是原始值,原始值直接拷贝复制  可用typeof
        // 2.如果原属性是引用值(如card、wife)则判断它是数组还是对象(三种方法instanceof、constructor、toString)
        //   是数组类型建立新[],是对象类型建立新{}
        // 3.创建好后 再按1-3步循环判断原引用值属性里的东西(如card和wife里的东西)
        // 4.递归                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 


        //克隆方法
        function deepClone(origin, target) {
            var target = target || {}; //有形参用形参,无则新建一个对象
            var toStr = Object.prototype.toString; //简化toString的调用
            var arrStr = "[object Array]";

            //1.遍历原有对象的属性
            for (var prop in origin) {
                //2.先判断是否为对象自己的属性,排除原型的属性
                if (origin.hasOwnProperty(prop)) {
                    //3.判断原属性是引用值(且不为null),否则是原始值
                    if (typeof (origin[prop]) == 'object' && origin[prop] !== "null") {
                        //4.是数组类型建立[],是对象类型建立{}
                        if (toStr.call(origin[prop]) == arrStr) {
                            target[prop] = [];
                        } else {
                            target[prop] = {};
                        }
                        //忽略:这里也可以用‘三目运算符’表示
                        //忽略:target[prop] = toStr.call(origin[prop] == arrStr)? [] : {};

                        //再判断属性里的东西
                        deepClone(origin[prop], target[prop]);
                    }else { 
                        target[prop] = origin[prop];
                    }
                }
            }
            return target;
        }
    </script>
</body>

</html>
使用 WSL 在 Windows 上安装 Linux 开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。 阅读详情

相关推荐

Simulink实战:火电机组一次调频与AGC协同控制建模与仿真解析

本文详细解析了如何使用Simulink进行火电机组一次调频与AGC协调控制的建模与仿真。通过系统架构设计、参数设置和模块实现,阐述了如何实现两者的协同控制,确保电网频率稳定。文章提供了实用的建模技巧、参数整定经验和性能评估方法,为电力系统仿真工程师提供了有价值的实践指导。

c7d8e9的博客 308

js深度克隆(面试常见问题)

js的克隆问题会经常问到,下面就由我来为大家讲解一下这个问题,同时也为我自己巩固一下知识点。       js中的数据类型分为两大类:原始类型和对象类型。(1)原始类型包括:数值、字符串、布尔值、null、undefined(2)对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象----函数、数组。 对象的原型是引用对象,它把原型的方法和属性放在内存当中,通过原型链的方式来指向这个内存

liushuxin1221的博客 941

【项目分享】RailTracker: 火车票务数据采集与分析

从12306使用爬虫爬取火车站及车次信息、火车票价 通过本项目,我们将带领访问者手把手完成火车票数据采集、数据清洗、数据集成、可视化的一整个流程!

zhushatong的博客 3345

java clone 深拷贝、浅拷贝 的两种实现--override clone() 和 Serializable

1.首先,你要知道怎么实现克隆:实现Cloneable接口,在bean里面重写clone()方法,权限为public。 2.其次,你要大概知道什么是地址传递,什么是值传递。 3.最后,你要知道你为什么使用这个clone方法。 先看第一条,简单的克隆代码的实现。这个也就是我们在没了解清楚这个Java的clone的时候,会出现的问题。 看完代码,我再说明这个时候的问题。 先看我要克隆的学生bean的代...

请叫我大师兄 8845

使用VS Code创建第一个Flutter工程

你可以使用任意文本编辑器结合命令行工具来开发Flutter应用。然而,我们推荐使用本文介绍的编辑器插件以获取更好的开发体验。这些插件提供了代码补全、代码高亮、widget辅助编辑等功能,以及为项目的运行和调试提供支持。推荐的开发工具有VS Code、Android Studio、IntelliJ。本文将重点介绍如何使用VS Code进行Flutter应用开发。

2501_91373349的博客 2127

Flowable多数据源实战:从配置到指定Schema的避坑指南

本文详细介绍了Flowable多数据源配置的实战指南,包括基础配置、数据源Bean创建、指定Schema的进阶配置以及常见问题排查。通过具体代码示例和避坑建议,帮助开发者高效实现多租户系统中的工作流引擎集成,特别强调了schema设置和事务管理的注意事项。

weixin_30824599的博客 486

java对象 深度克隆(不实现Cloneable接口)和浅度克隆

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt128 为什么需要克隆: 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java...

weixin_30699235的博客 121

解决VNC Viewer连接Ubuntu桌面异常:从灰屏到完整菜单栏的实战指南

本文详细解析了使用VNC Viewer连接Ubuntu桌面时出现灰屏或菜单栏缺失的常见原因及解决方案。从桌面环境冲突到配置文件错误,提供了彻底清理系统残留配置、重新安装纯净桌面环境、优化xstartup文件配置等实战步骤,帮助用户快速恢复完整的远程桌面体验。

weixin_30892037的博客 83

js面试题:实现对象深度克隆(deepClone)的三种方案

方案一:利用现代浏览器支持的JSON对象做一次中转,实现深度克隆。(IE6、IE7不支持原生JSON对象,可载入json2.js补丁来达到兼容)感谢rekey提供此方案。JSON.stringify()与JSON.parse()详细信息请点击这里 var deepClone = function (obj) { var _tmp,result; _tmp = JSON....

weixin_30699443的博客 354

从零到一:如何用YOLOv8和PyQt5打造你的第一个花卉识别桌面应用

本文详细介绍了如何使用YOLOv8和PyQt5从零开始构建一个花卉识别桌面应用。涵盖环境搭建、数据准备、模型训练、界面设计、模型集成与性能优化等全流程,帮助开发者快速掌握深度学习目标识别技术的实际应用。

weixin_29048775的博客 454

「UG/NX」BlockUI 控件集合目录大纲

Block UI Styler 模块设计对话框是官方推荐使用的对话框制作方法,它能够与NX自身风格相统一,在实际开发中经常使用。文字内容包含:NX所有控件介绍的链接、内部控件调用的基础介绍、官方案例查看路径、控件的特殊用法篇链接、番外篇链接。

何曾参静谧的博客 2676

Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨

Part I 没啥好说的,直接开始Part II吧。   Part II 谈到了对象的克隆,就不得不说为什么要对对象进行克隆。Java中所有的对象都是保存在堆中,而堆是供全局共享的。也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来)。有的时候,我们编写的代码想让调用者只获得该对象的一个...

Kent.Kwan的技术博客 637

机器人环境仿真软件:Webots_(9).路径规划与导航算法仿真实现

通过仿真,我们可以验证路径规划算法的有效性和鲁棒性,同时优化机器人在不同环境中的导航性能。动态窗口法是一种局部路径规划算法,通过在机器人当前速度空间中选择一个最优的速度窗口,使机器人在动态环境中安全地移动。算法的代价函数通常包括两个部分:从起始点到当前节点的实际代价(g-cost)和从当前节点到目标节点的估计代价(h-cost)。在World Editor中,选择“Insert”菜单,添加“Robot”对象,如“E-puck”或“Thymio”。Dijkstra算法的实现与A*算法类似,但不使用启发函数。

kkchenjj的博客 2006

【JavaScript版数据结构与算法面向大厂面试】第九章 数据结构之“图”

第九章 数据结构之“图” 9.1 图简介 9.2 图的深度与广度优先遍历 9.3 LeetCode: 65. 有效数字 9.4 LeetCode: 417. 太平洋大西洋水流问题 9.5 LeetCode: 133. 克隆图 9.6 图总结

qiqizgl777的博客 203

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JavaScript 浅层克隆和深度克隆

浅层克隆和深度克隆1 相关知识点 浅克隆就是将栈内存中的引用复制一份,赋给一个新的变量,本质上两个指向堆内存中的同一地址,内容也相同,其中一个变化另一个内容也会变化。深克隆就是创建一个新的空对象,开辟一块内存,然后将原对象中的数据全部复制过去,完全切断两个对象间的联系。区别:浅克隆和深克隆最大的区别就是对引用值的处理了,即浅克隆之后你改我也改,深克隆之后你改我不改。2 浅层克隆3 深度克隆 3.4 hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性,即是否有指定的键

Yuki_yuhan的博客 3854

pscad IEEE标准系统搭建说明

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

如何在 JavaScript 中进行深度克隆?

JSON 方法适用于简单对象的深度克隆,但不支持函数、日期、正则表达式等。手动递归克隆是最灵活的方式,可以处理多种类型,但需要编写额外的代码。****是现代浏览器中的原生方法,支持更多的数据类型,但兼容性较差。**第三方库(如 Lodash)**提供了可靠的深度克隆实现,适用于复杂应用,但增加了项目依赖。在实际项目中,根据需求选择适合的方法。如果你的项目依赖较少,且需要处理复杂数据类型,手动实现或者使用是不错的选择。

向着太阳迎着光 1710

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

js关于深度克隆问题

js的克隆是一个老生常谈的内容了,今天没啥好写的,就写这个了要搞清楚js的克隆,就需要先搞清楚js中的数据类型,js中数据类型分为两大类原始类型的拷贝确实相对简单,因为这些类型通常存储在栈上,这意味着它们在内存中占据的空间是固定的,并且可以直接通过指针进行复制。tips:如果你还搞不清楚什么是引用类型,什么是原始类型,可以看我的这篇文章然而,对于引用类型来说,拷贝则要复杂得多。引用类型的对象(例如数组或对象)存储在堆上,这意味着它们在内存中占据的空间是不固定的,并且由垃圾回收器管理。

JiuMeilove的博客 1万+

js中的深度克隆的简单实现

引子: js中的深浅拷贝一直是一个热门的话题,简单来说,拷贝就是通过一些方法产生与被拷贝数据(几乎)完全一样的数据。在js中,拷贝可以分为深拷贝(深度克隆)和浅拷贝两种。 浅拷贝:对拷贝后的数据进行修改会影响原数据的一种拷贝方式。 深拷贝(深度克隆):对拷贝后的数据进行修改不会影响原数据的一种拷贝方式。 按照一般的理解来说通过拷贝得到的数据无论如何被修改应该也不会影响原数据呀,比如我们日常...

Wayne1998的博客 7331

js深度克隆和浅度克隆

“使用JavaScript深度克隆一个对象。” 这是一个出现概率很高的面试题,下面就来总结下,二者的区别以及其代码。科普一下: js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递; 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内存中的地址。1.概念浅度克隆:基本类型为值传递,对象仍为引用传递。

匪鉴 2724

JS深度克隆代码实现

js深度克隆js对象组成说对象的深度克隆之前,要先明白JS 中对象的组成。 以一句话说js中一切皆对象具体数据类型分为两种: - 原始数据类型 - 引用数据类型 原始数据类型:其中存储的是对象的实际地址。eg. number、string、boolean、还有两个特殊的null、undefined 引用数据类型:其中存储的是对象的引用地址。eg. array、fu

哎 8111

关于javascript的深度克隆

js的深度克隆可以是一个非常深入的话题,如果能把深度克隆函数写得比较好,基本可以认为对js这门语言掌握的程度就很高了。 先帖两个参考文章,后面再慢慢填坑吧: 参考文章1:考虑了一些基本的情况,例如function原型、REG对象、自引用等。 参考文章2:考虑得更多,增加了内存爆栈的情况。 参考文章3:相对比较基础,从实用角度,可以使用jquery.extent(),可以使用loadsh工具库。 对...

iamlongalong的博客 259

JS对象深度克隆实现

本文介绍了JavaScript对象深度克隆的实现,分析了针对原始类型(数值、字符串、布尔值)和对象类型(对象,函数、数组)实现深度克隆的方法,最后给出了一个通用的JS对象深度克隆的方法。

诗渊的博客 1万+

js深度克隆

整理以前的笔记,看到JS深度克隆觉得挺有趣,在总结一下:   深度克隆某个对象就是克隆对象的“自有属性”以及它的“原型链”,对于克隆原型链最好的办法就是使用它的构造函数,我们知道每个构造函数都有一个prototype属性指向它的原型对象,当然,原型对象也有一个constructor属性指回构造函数。所以利用子代对象的constructor( )方法可以得到子代对象的构造函数,再次利用构造函数创建

luca的博客 1108

JavaScript对象深度克隆的简单实现

众所周知,对象是一种引用类型 对象的地址指针存放于栈中,而对象实际的数据存放于堆中。 因此当我们简单地执行复制操作时,实际是把地址指针进行了复制操作,因此在对象的实际数据改变之后,新旧对象都会受到影响。 那么如何不受到影响呢? 此谓深度克隆 JS中的深度克隆,指的是原对象改变了,克隆出来的新对象也不会改变,原对象与新对象是完全独立的关系。 有深度克隆就是 浅度克隆 原始类型为值传递,对象类型仍为引...

前端啤酒屋 890

js对象的深度克隆

在聊JavaScript(以下简称js)深度克隆之前,我们先来了解一下js中对象的组成。 在js中一切实例皆是对象,具体分为原始类型和合成类型:原始类型对象指的是Undefined、Null、Boolean、Number和String,按值传递。合成类型对象指的是array、object以及function,按址传递,传递的时候是内存中的地址。 克隆或...

源辰_付鹏程 1240

javascript浅度克隆、深度克隆

1.对象属性浅度克隆 let clone = Object.assign({}, target) 2.对象属性深度克隆 简单的深克隆可以使用JSON.parse()和JSON.stringify(),这两个api是解析json数据的,所以只能解析除symbol外的原始类型及数组和对象 let cloneObj = JSON.parse(JSON.stringify(target)) 3....

m0_37293343的博客 296
下一篇: Vue 2-计算属性,方法,侦听器
Sukie_
博客等级 码龄9年 849粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值