js deepclone(深度克隆)

news/2024/10/24 3:25:59/

1.最简单的方法,序列号反序列化一遍就好了,但是会丢失function,undefined或者NaN的属性

JSON.parse(JSON.stringify(xxx));

2.自己写一个方法,遍历获取属性

function deepClone(obj) {let objClone;if (obj && (obj.constructor == Object || obj.constructor == Array)) {objClone = new obj.constructor();} else {return obj;}for (const key in obj) {if ({}.hasOwnProperty.call(obj, key)) {objClone[key] = deepClone(obj[key]);}}return objClone;
}

后续百度了发现还有其他方法,在这补充一下
原文:https://zhuanlan.zhihu.com/p/78234841

3.通过Object.getPrototypeOf() 获取目标对象的原型,通过Object.assign()生成一个新的对象

function deepclone(target) {if (typeof target !== "object") return target;return Object.assign({},Object.create(Object.getPrototypeOf(target)),target);
}

4.通过Object.getPrototypeOf() 获取目标对象的原型,通过扩展运算符以及proto来实现深度克隆(仅适用于浏览器端)

function deepclone(target) {if (typeof target !== "object") return target;return {__photo__: Object.getPrototypeOf(target),...target};
}

http://www.ppmy.cn/news/824130.html

相关文章

TPS62150AQRGTRQ1

TPS62150AQRGTRQ1 规格 产品属性 制造商:Texas Instruments 产品种类:开关稳压器 RoHS: 详细信息 安装风格:SMD/SMT 封装 / 箱体:VQFN-16 拓扑结构:Buck 输出电压:900 mV to 6 V 输出电流:1 A 输出端数量:1 Output 输入电压(比较小值):3 V 输入电压&…

48G HDMI 2.18K 60HZ 纯MUX 1:2/2:1

PI3HDX14412 纯MUX1:2,2:1 TQFN40 PIN 80G TC14412 纯 MUX 1:2/2:1 QFN 40PIN 48G 双向 AB Bi directIonal 模拟开关 ,用于AB切换器, type-c 双向切换, 雷电切换 HDMI双向切换, DP双向切换, 堪称行业天花板水…

芯片k66中文数据手册_IXFK66N50Q2

本词条由华强电子网用户提供,如果涉嫌侵权,请与我们客服联系,我们核实后将及时处理。 概述 类别:分离式半导体产品 家庭:MOSFET,GaNFET - 单 系列:HiPerFET™ FET 型:MOSFET N 通道&…

Oracle.day01多表查询与联表查询

-- 此时,只要exists中的查询结果有一条或一条以上的数据时,执行前面的语句。-- exists中的查询结果没有数据时,则不运行前面的语句。select * from sysuserwhere userNamecqband exists(select * from sysuserwhere userPassword"123456…

SQL基础--多表查询

-- --SQL基础-->多表查询 -- /* 一、多表查询 简言之,根据特定的连接条件从不同的表中获取所需的数据 笛卡尔集的产生条件: 省略连接条件 连接条件无效 第一个表中的所有行与第二个表中的所有行相连接 二、多表查询语法:*/ SELECT tab…

数据库--- DQL 多表联合查询(一)

一、连接查询(多张表关联查询) 根据表的连接方式来划分: 内连接:等值连接、非等值连接、自连接 外连接:左外连接(左连接)、右外连接(右连接) 全连接 在表达连接查询…

hql连表查询(多表查询)

hql连表查询的问题,总结了一下,与大家分享 package android.com.bzjm.test;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import com.bz…