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

东莞seo网站优化排名织梦cms怎么搭建网站

东莞seo网站优化排名,织梦cms怎么搭建网站,郑州网站建设公司服务公司,网站开发答辩设计预期目标在JavaScript中#xff0c;实现深拷贝的方式有很多种#xff0c;每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。 下面列举一些常见的方式#xff0c;以及它们的代码示例和优缺点#xff1a; 1. 使用JSON.parse(JSON.stringify(…在JavaScript中实现深拷贝的方式有很多种每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。 下面列举一些常见的方式以及它们的代码示例和优缺点 1. 使用JSON.parse(JSON.stringify(obj)) 代码示例 function deepClone(obj) {return JSON.parse(JSON.stringify(obj)); }优点简单易行对于大多数对象类型有效。 缺点不能复制原型链对于包含循环引用的对象可能出现问题。比如以下代码 const calendarEvent {date: new Date() }const problematicCopy JSON.parse(JSON.stringify(calendarEvent))最终得到的date不是Data对象而是字符串。 {date: 2024-03-02T03:43:35.890Z }这是因为JSON.stringify只能处理基本的对象、数组。任何其他类型都没有按预期处理。例如日期转换为字符串。Set/Map只是转换为{}。 const kitchenSink {set: new Set([1, 3, 3]),map: new Map([[1, 2]]),regex: /foo/,deep: { array: [ new File(someBlobData, file.txt) ] },error: new Error(Hello!) }const veryProblematicCopy JSON.parse(JSON.stringify(kitchenSink))最终得到如下数据 {set: {},map: {},regex: {},deep: {array: [{}]},error: {}, }2. 使用递归 代码示例 function deepClone(obj) {if (obj null || typeof obj ! object) {return obj;}let clone obj.constructor();for (let attr in obj) {if (obj.hasOwnProperty(attr)) {clone[attr] this.deepClone(obj[attr]);}}return clone; }优点对于任何类型的对象都有效包括循环引用。 缺点对于大型对象可能会消耗大量内存并可能导致堆栈溢出。 3. 第三方库如 lodash 的 _.cloneDeep 方法 代码示例 const _ require(lodash); function deepClone(obj) {return _.cloneDeep(obj); }优点支持更多类型的对象和库例如支持 Proxy 对象。 缺点会引入依赖导致项目体积增大。 因为这个函数会导致17.4kb的依赖引入如果只是引入lodash会更高。 4. 现代深拷贝structuredClone 在现代浏览器中可以使用 structuredClone 方法来实现深拷贝它是一种更高效、更安全的深拷贝方式。 以下是一个示例代码演示如何使用 structuredClone 进行深拷贝 const kitchenSink {set: new Set([1, 3, 3]),map: new Map([[1, 2]]),regex: /foo/,deep: { array: [ new File(someBlobData, file.txt) ] },error: new Error(Hello!) } kitchenSink.circular kitchenSinkconst clonedSink structuredClone(kitchenSink)structuredClone可以做到 拷贝无限嵌套的对象和数组拷贝循环引用拷贝各种各样的JavaScript类型如Date、Set、Map、Error、RegExp、ArrayBuffer、Blob、File、ImageData等 哪些不能拷贝 函数DOM节点属性描述、setter和getter对象原型链 所支持的完整列表 Array、ArrayBuffer、Boolean、DataView、Date、Error类型下面具体列出的类型、Map、Object但仅限于普通对象、原始类型除了symbol又名number、string、null、undefined、boolean、BigInt、RegExp、Set、TypedArray Error类型 Error, EvalError, RangeError, ReferenceError , SyntaxError, TypeError, URIError Web/API类型 AudioData, Blob, CryptoKey, DOMException, DOMMatrix, DOMMatrixReadOnly, DOMPoint, DomQuad, DomRect, File, FileList, FileSystemDirectoryHandle, FileSystemFileHandle, FileSystemHandle, ImageBitmap, ImageData, RTCCertificate, VideoFrame 值得庆幸的是 structuredClone 在所有主流浏览器中都受支持也支持Node.js和Deno。 最后 我们现在终于可以直接使用原生JavaScript中的structuredClone能力实现深度拷贝对象。每种方式都有其优缺点具体使用方式取决于你的需求和目标对象的类型。 参考 Deep Cloning Objects in JavaScript, the Modern Waywww.builder.io/blog/structured-clone mozilla structuredClonedeveloper.mozilla.org/zh-CN/docs/Web/API/structuredClone 看完本文如果觉得有用记得点个赞支持收藏起来说不定哪天就用上啦 专注前端开发分享前端相关技术干货公众号南城大前端ID: nanchengfe
http://www.pierceye.com/news/818204/

相关文章:

  • 可以上传网站的免费空间网站注册都需要什么
  • wap网站开发重庆永川网站建设公司
  • 网站历史记录怎么恢复seo网站优化软件
  • 四川瑞通工程建设有限公司网站贵州省网站建设
  • 购买网站设计制作易龙天做的网站怎么样
  • 十大免费网站推广入口无锡网站建设首选捷搜
  • 网站搭建原理网页制作工程师
  • 中国工程建设交易信息网站邢台百度爱采购
  • 保定建设网站公司qq登陆 wordpress
  • 博客网站开发环境专业外贸网站建设公司价格
  • 响应式电商网站制作企业咨询诊断报告
  • 企业网站怎么建设公司展厅装修设计
  • 怎么联系网站管理员怎么做拍卖网站
  • 山东威海网站开发长沙新媒体运营公司
  • 社保网站做员工用工备案wordpress登录查看
  • 做网站公司名字应该用图片吗沃尔玛公司网站建设案例分析
  • 网站空间大小多少合适做关于车的网站
  • 专注咖啡相关的网站wordpress 访问缓慢
  • 自适应网站制作官网网站域名与建设
  • 淘宝网站开发成本武进建设局网站进不去
  • 比较好网站制作公司行业协会网站织梦模板
  • 牛人网络网站像wordpress一样的网站吗
  • 那种做任务的网站叫什么wordpress 数据库 旧Ip
  • 制作深圳网站建设百度推广广告收费标准
  • 电影采集网站建设国产做爰全免费的视频网站
  • 集团网站建设特点 助君长春seo公司网站
  • 网站域名备案 更改吗在线做文档的网站
  • 青海网站制作多少钱做网站教程pdf
  • dw做网站背景音乐wordpress 获取当前文章id
  • 上海鹭城建设集团网站icp备案查询