当前位置: 首页 > news >正文

泰兴网站开发哪个网站做中高端衣服

泰兴网站开发,哪个网站做中高端衣服,wordpress大前端dux5.2,中国行业信息网深度克隆(Deep Clone)是指复制一个对象或数组及其所有嵌套结构的副本,使得克隆后的对象与原对象完全独立。JavaScript 提供了一些方法实现深度克隆,但每种方法有其优缺点。 1. 常用方法 1.1 使用 JSON.parse 和 JSON.stringify …

深度克隆(Deep Clone)是指复制一个对象或数组及其所有嵌套结构的副本,使得克隆后的对象与原对象完全独立。JavaScript 提供了一些方法实现深度克隆,但每种方法有其优缺点。

1. 常用方法

1.1 使用 JSON.parseJSON.stringify

这种方法最简单,但有局限性。

const obj = { a: 1, b: { c: 2 } };
const clone = JSON.parse(JSON.stringify(obj));console.log(clone); // { a: 1, b: { c: 2 } }
console.log(clone === obj); // false
console.log(clone.b === obj.b); // false
优点
  • 简单易用。
  • 适用于纯 JSON 格式的数据。
缺点
  • 不支持函数、undefinedSymbol、循环引用等。
  • 日期对象会变成字符串,RegExp 对象会丢失。

1.2 使用 structuredClone

structuredClone 是一种内置的深拷贝方法,支持复杂数据结构。

const obj = { a: 1, b: { c: 2 }, d: new Date() };
const clone = structuredClone(obj);console.log(clone); // { a: 1, b: { c: 2 }, d: Date }
console.log(clone === obj); // false
console.log(clone.b === obj.b); // false
优点
  • 支持更多类型(如 DateRegExpMapSet 等)。
  • 处理循环引用。
缺点
  • 不支持旧版本浏览器。
1.3 使用递归实现深度克隆

通过递归遍历对象和数组,手动实现深拷贝。

function deepClone(obj) {if (obj === null || typeof obj !== 'object') {return obj;}if (obj instanceof Date) {return new Date(obj);}if (obj instanceof RegExp) {return new RegExp(obj);}const clone = Array.isArray(obj) ? [] : {};for (const key in obj) {if (obj.hasOwnProperty(key)) {clone[key] = deepClone(obj[key]);}}return clone;
}const obj = { a: 1, b: { c: 2 }, d: new Date() };
const clone = deepClone(obj);console.log(clone); // { a: 1, b: { c: 2 }, d: Date }
console.log(clone === obj); // false
console.log(clone.b === obj.b); // false
优点
  • 完全控制克隆逻辑。
  • 支持特定类型的处理。
缺点
  • 不支持循环引用,需额外处理。

2. 循环引用处理

对于有循环引用的对象,需要使用 WeakMap 来避免递归陷入死循环。

function deepClone (value, cache = new WeakMap ()) {if (typeof value !== "object" || value === null) {return value;}if (cache.has(value)) {return cache.get(value);}const result = Array.isArray(value) ? [] : {};Object.setPrototypeOf(result, Object.getPrototypeOf(value));cache.set(value, result);for (i in value) {if (value.hasOwnProperty(i)) {result[i] = deepClone(value[i], cache);}}return result;
}const obj = { a: 1 };
obj.b = obj; // 循环引用let clone = deepClone(obj);
console.log(clone); // { a: 1, b: [Circular] }const Person = function(name, age) {this.name = name;this.age = age;
}Person.prototype.a = 100;clone = new Person('a', 12)console.log(clone);

3. 方法对比

方法支持类型处理循环引用性能易用性
JSON.parse/stringify仅支持 JSON 格式简单
structuredClone支持大部分类型简单
手动递归可定制支持类型否(需扩展)中等
Lodash支持复杂结构和循环引用简单

推荐

  • 数据结构简单:使用 JSON.parseJSON.stringify
  • 现代浏览器:使用 structuredClone
  • 复杂场景:使用 Lodash 或手动实现带循环引用处理的深拷贝函数。
http://www.yayakq.cn/news/455202/

相关文章:

  • 免费的网站登录模板下载手机软件网站
  • 黄冈做网站的公司哪家好外贸公司网站模板
  • 手机网站菜单网页怎么做的浙江网站怎么做推广
  • 网站建设空白栏目整改报告一款app从开发到上线的流程
  • 网络促销策略网站优化前景
  • 常青花园做网站的公司天津做网架公司
  • 江西省赣州市官网wordpress seo 模板
  • wordpress整个网站响应速度慢app软件大全
  • 手机微网站建设方案企业邮箱怎么开通注册
  • 网站建设端口wordpress添加联系qq
  • 创业网站平台排名解决wordpress需要ftp
  • 济南建设个人网站平台SEO网站价格
  • 什么什么设计英文网站门户网站安全建设方案
  • 免费的软件下载网站品牌营销策划服务
  • 网站备案核验点 上海怎样提高网站知名度
  • 厦门网站免费制作网站二级导航
  • 谷歌企业邮箱注册关键词快速排名seo怎么优化
  • 勾线外包网站网站建设做什么费用
  • 网站设计 现在流行的导航方式台州网站设计建设
  • 网站开发的目的意义特色创新自己做网站能赚钱么
  • 商务网站的推广方法有哪些南京凯盛建设集团官方网站
  • 简单的网站开发的软件网站产品原型图
  • wordpress数据库地址seo排名推广工具
  • 买好域名和云主机后怎么做网站seo站长平台
  • 域名怎么拿来做网站seo网站优化推广费用
  • 网站怎么做效果更好如何注册一个好的域名
  • 网站设置仅某浏览器企业培训师资格证报考官网入口
  • 做汽车商城网站凉山州规划和建设局网站
  • 优秀的设计网站怎么编辑网页
  • 鹏牛网做网站怎么样二次元网站设计