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

公司建设网站的申请信用卡任何查询网站有没有做404

公司建设网站的申请信用卡,任何查询网站有没有做404,携程做旅游的网站,外冈网站建设前言 在js中我们想要实现深拷贝#xff0c;首先要了解深浅拷贝的区别。 浅拷贝#xff1a;只是拷贝数据的内存地址#xff0c;而不是在内存中重新创建一个一模一样的对象#xff08;数组#xff09; 深拷贝#xff1a;在内存中开辟一个新的存储空间#xff0c;完完全全…前言 在js中我们想要实现深拷贝首先要了解深浅拷贝的区别。 浅拷贝只是拷贝数据的内存地址而不是在内存中重新创建一个一模一样的对象数组 深拷贝在内存中开辟一个新的存储空间完完全全的拷贝一整个一模一样的对象数组 1. MessageChannel实现深拷贝 MDN资料https://developer.mozilla.org/zh-CN/docs/Web/API/MessageChannel MDN中关于MessageChannel的介绍 Channel Messaging API 的 MessageChannel 接口允许我们创建一个新的消息通道并通过它的两个 MessagePort 属性发送数据。 备注 此特性在 Web Worker 中可用 使用方法 封装一个deepclone函数 function deppClone(obj) {return new Promise(resolve {const { port1, port2 } new MessageChannel()port1.postMessage(obj)port2.onmessage e {resolve(e.data)}}) }测试代码 function deppClone(obj) {return new Promise(resolve {const { port1, port2 } new MessageChannel()port1.postMessage(obj)port2.onmessage e {resolve(e.data)}}) } const obj { a: , c: undefined, e: 0, f: [], g: NaN, h: null } obj.b objlet newObj null await deppClone(obj).then(res {newObj res })console.log(obj, obj) console.log(newObj, newObj) console.log(obj newObj) console.log(obj.b newObj) console.log(obj newObj.b)结果 优点 他可以完美解决循环引用的问题。 支持的浏览器版本比较多 文献资料 缺点 不支持拷贝函数 不支持拷贝Symbol 2. structuredClone实现深拷贝 文献资料https://developer.mozilla.org/zh-CN/docs/web/api/structuredClone MDN中关于structuredClone()的介绍 全局的 structuredClone() 方法使用结构化克隆算法将给定的值进行深拷贝。 该方法还支持把原始值中的可转移对象转移到新对象而不是把属性引用拷贝过去。 可转移对象与原始对象分离并附加到新对象;它们不可以在原始对象中访问被访问到。 使用方法: structuredClone(obj)测试代码 const obj { a: ,c:undefined,e:0,f:[],g:NaN,h:null } obj.b objconst newObj structuredClone(obj)console.log(obj,obj) console.log(newObj,newObj) console.log(obj newObj) console.log(obj.b newObj) console.log(obj newObj.b) 结果 优点 他可以完美解决循环引用的问题。 而且非常简单调用API即可。 缺点 这是一个新的API它支持的浏览器版本比较新 不支持拷贝函数 不支持拷贝Symbol 3.手动封装deepClone函数 最经典的就是手动封装一个deepClone函数去主动判断传入类型并且递归创建新的对象 使用方法: 封装函数并判断类型 function isObject(value) {const valueType typeof valuereturn (value ! null) (valueType object || valueType function) }function deepClone(originValue, map new WeakMap()) {// 判断是否是一个Set类型if (originValue instanceof Set) {return new Set([...originValue])}// 判断是否是一个Map类型if (originValue instanceof Map) {return new Map([...originValue])}// 判断如果是Symbol的value, 那么创建一个新的Symbolif (typeof originValue symbol) {return Symbol(originValue.description)}// 判断如果是函数类型, 那么直接使用同一个函数if (typeof originValue function) {return originValue}// 判断传入的originValue是否是一个对象类型if (!isObject(originValue)) {return originValue}if (map.has(originValue)) {return map.get(originValue)}// 判断传入的对象是数组, 还是对象const newObject Array.isArray(originValue) ? []: {}map.set(originValue, newObject)for (const key in originValue) {newObject[key] deepClone(originValue[key], map)}// 对Symbol的key进行特殊的处理const symbolKeys Object.getOwnPropertySymbols(originValue)for (const sKey of symbolKeys) {// const newSKey Symbol(sKey.description)newObject[sKey] deepClone(originValue[sKey], map)}return newObject }测试代码 let s1 Symbol(aaa) let s2 Symbol(bbb)const obj {a: 18,b: {c: www,d: {e: www}},// 数组类型hobbies: [abc, cba, nba],// 函数类型foo: function(m, n) {console.log(wwww)console.log(wwww)return 123},// Symbol作为key和value[s1]: abc,s2: s2,// Set/Mapset: new Set([aaa, bbb, ccc]),map: new Map([[aaa, abc], [bbb, cba]]) }obj.info objconst newObj deepClone(obj) console.log(newObj obj) console.log(obj,obj) console.log(newObj,newObj) console.log(newObj.s2 obj.s2)结果 优点 他可以完美解决各种问题。 4. JSON实现深拷贝 这是最不推荐使用的方法 优点这是最简单的方式了只能处理不复杂的对象 const symbol1 Symbol(); const obj { a: ,c:undefined,e:0,f:[],g:NaN,h:null,i:symbol1 }let newObj JSON.parse(JSON.stringify(obj))console.log(obj,obj) console.log(newObj,newObj)缺点 不能解决循环引用 NaN问题 忽略Symbol()undefined 5.其他 比如lodash、jQuery等插件的实现方式就不多讲了。
http://www.dnsts.com.cn/news/246034.html

相关文章:

  • 江门网站优化经验网站四网合一
  • 中国网站建设世界排名额尔古纳网站建设价格
  • 福田网站设计处理中国科技网官网
  • 网站建设 好公司免费设计手写签名
  • 内部网络网站怎么做外贸seo营销ppt
  • 深圳网站建设怎样选托管网站是什么意思
  • 网站空格键代码网站建设协议书模板 完整版
  • wordpress修改站点名企查查企业信息查询网官网
  • 哪个网站可以免费学编程logo生成器免费下载
  • 房地产公司 网站建设江西网站建设与推广
  • 烟台市芝罘区建设局网站自助建站是什么意思
  • 如何做网站插件wordpress添加路由
  • 离退休工作网站建设方案长沙网站制作方法
  • phpstudy如何搭建网站手机和电脑同步的进销存软件
  • 信阳做网站的公司wordpress在线商城
  • 网站建设和维护合同东莞设计企业网站的有哪些
  • 展会网站建设阿里云网站备案需要多久
  • 残联网站建设概况网站开发人员周报
  • 网站开发者yotoon广西网站建设-好发信息网
  • 惠州app网站建设排行榜抖音产品推广方案
  • 做网站 不做源码一个网站的建设步骤是
  • 佛山市品牌网站建设哪家好检察院门户网站建设情况总结
  • json取数据做网站开福区网站建设中
  • 个人网站可备案微信公众平台开发教程
  • 福建设计招聘网站有哪些免费推广网站
  • 上海省住房与城乡建设厅网站家居网站建设平台
  • 电商网站建设价格网站建设的栏目规划
  • 展示网站模版源码有哪些做ppt的网站
  • 怎么弄一个网站平台linux下wordpress安装
  • 移动网站建设渠道网站怎么能快速备案