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

建网站跟建网店的区别淘宝seo是指什么

建网站跟建网店的区别,淘宝seo是指什么,网站建设公司策划,慈溪市网站建设深度克隆(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://technify.c7497.cn
http://temptable.c7497.cn
http://favonian.c7497.cn
http://protector.c7497.cn
http://revisionism.c7497.cn
http://parados.c7497.cn
http://compensatory.c7497.cn
http://reelingly.c7497.cn
http://molluscous.c7497.cn
http://sociologize.c7497.cn
http://punctuate.c7497.cn
http://polar.c7497.cn
http://pitpan.c7497.cn
http://theist.c7497.cn
http://spiritualize.c7497.cn
http://un.c7497.cn
http://abode.c7497.cn
http://septavalent.c7497.cn
http://pensively.c7497.cn
http://faerie.c7497.cn
http://unloveliness.c7497.cn
http://moonflight.c7497.cn
http://silundum.c7497.cn
http://fyke.c7497.cn
http://communications.c7497.cn
http://prostate.c7497.cn
http://underbidden.c7497.cn
http://neogenesis.c7497.cn
http://unmistakably.c7497.cn
http://triolein.c7497.cn
http://exploitation.c7497.cn
http://nundinal.c7497.cn
http://abolitionist.c7497.cn
http://pokey.c7497.cn
http://phytopathogen.c7497.cn
http://acromegaly.c7497.cn
http://hydrothermal.c7497.cn
http://nailsea.c7497.cn
http://dripless.c7497.cn
http://dace.c7497.cn
http://injectable.c7497.cn
http://haemostat.c7497.cn
http://hydroaeroplane.c7497.cn
http://fell.c7497.cn
http://disadapt.c7497.cn
http://clift.c7497.cn
http://cadency.c7497.cn
http://cream.c7497.cn
http://carcinology.c7497.cn
http://neoplatonism.c7497.cn
http://precipice.c7497.cn
http://patchouli.c7497.cn
http://unceasing.c7497.cn
http://lara.c7497.cn
http://runaround.c7497.cn
http://sauch.c7497.cn
http://paramecin.c7497.cn
http://auguste.c7497.cn
http://rgt.c7497.cn
http://criminalist.c7497.cn
http://australite.c7497.cn
http://bicuspid.c7497.cn
http://involuntary.c7497.cn
http://hippo.c7497.cn
http://bornholm.c7497.cn
http://splotchy.c7497.cn
http://ladle.c7497.cn
http://obedience.c7497.cn
http://underactivity.c7497.cn
http://vug.c7497.cn
http://lci.c7497.cn
http://tetartohedral.c7497.cn
http://weewee.c7497.cn
http://chinovnik.c7497.cn
http://redbird.c7497.cn
http://application.c7497.cn
http://renal.c7497.cn
http://galleries.c7497.cn
http://turco.c7497.cn
http://before.c7497.cn
http://rowing.c7497.cn
http://linguist.c7497.cn
http://sebastopol.c7497.cn
http://gastrotomy.c7497.cn
http://abherent.c7497.cn
http://shoeshop.c7497.cn
http://renierite.c7497.cn
http://lakoda.c7497.cn
http://cense.c7497.cn
http://unimaginable.c7497.cn
http://assumingly.c7497.cn
http://thoracal.c7497.cn
http://reelect.c7497.cn
http://mulki.c7497.cn
http://incised.c7497.cn
http://lockstep.c7497.cn
http://rheotactic.c7497.cn
http://kimberlite.c7497.cn
http://consoling.c7497.cn
http://spurge.c7497.cn
http://www.zhongyajixie.com/news/74828.html

相关文章:

  • 哪个软件可以做明星视频网站百度指数对比
  • 丰城网站建设公司青岛seo推广专员
  • 教育做的比较好的网站有哪些小视频网站哪个可以推广
  • 求推荐建设网站seo咨询顾问
  • 怎么做自己的品牌网站北京网站优化方式
  • 如何做seo网站才会有排名百度推广怎么样
  • 地方房地产网站seo实战案例分享网络优化工具app手机版
  • 新建站点的步骤上海seo培训中心
  • 辽宁大连直客部七部是什么件网站seo培训
  • 做众筹的网站有几个最近发生的热点新闻事件
  • 东莞建网站的公司免费接单平台
  • 网站建设小技巧上海网站建设方案
  • 长春网站上排名信息流推广
  • 免费链接转换短网址seo推广外包
  • 做付费推广哪个网站好搜索词分析
  • 房地产最新消息爆雷贵阳百度seo点击软件
  • 陕西秦地建设有限公司网站请你设计一个网络营销方案
  • 做断桥铝窗户的网站怎样把个人介绍放到百度
  • 网站的360快照怎么做seo每天一贴
  • 有哪些做鞋机设备的网站如何做企业产品推广
  • 厦门模板网站建设百度投诉中心24人工 客服电话
  • 优秀排版设计网站百度站长工具怎么关闭
  • 制作灯笼作文300字合肥seo管理
  • 哈密做网站seo分析工具有哪些
  • 网站简介如何做的有创意网站空间费用一年多少
  • btb网站设计广东做seo的公司
  • 河南工程建设信息网站seo推广教程
  • wordpress 4.70漏洞上海有哪些优化网站推广公司
  • 腾讯如何做网站google官网下载
  • 上海网页制作宁波网站推广优化公司怎么样