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

网站建设公司能信吗局域网网站建设的步骤过程

网站建设公司能信吗,局域网网站建设的步骤过程,网站开发公司简介怎么写,网站 锚点链接怎么做JavaScript实现对象深拷贝的方法#xff08;5种#xff09;知识回调#xff08;不懂就看这儿#xff01;#xff09;场景复现实现对象深拷贝的五种方法1.json暴力转化2.es6扩展运算符3.for in循环遍历对象4.Object.assign()对象的合并5.利用循环和递归的方式实现对象浅拷贝… JavaScript实现对象深拷贝的方法5种知识回调不懂就看这儿场景复现实现对象深拷贝的五种方法1.json暴力转化2.es6扩展运算符3.for in循环遍历对象4.Object.assign()对象的合并5.利用循环和递归的方式实现对象浅拷贝的三种方法1.concat、slice返回一个新数组2.Object.assign()方法3.遍历对象通用方法知识回调不懂就看这儿 知识专栏专栏链接JavaScript知识专栏https://blog.csdn.net/xsl_hr/category_12024214.html?spm1001.2014.3001.5482JavaScript深浅拷贝的区别图解原理https://blog.csdn.net/XSL_HR/article/details/129838095?spm1001.2014.3001.5501 有关JavaScript的相关知识可以前往JavaScript知识专栏查看复习 场景复现 在上期文章中我们从底层原理方面对JavaScript数组对象的浅拷贝和深拷贝进行了详细的介绍看完上期文章之后想必大家对浅拷贝与深拷贝都有了一定的认识而本期文章将分享五个非常实用的深拷贝方法和三个实用的浅拷贝方法。 好的深拷贝方法有什么作用 首先深拷贝的学习对于我们在项目开发中进行数据处理是非常有用的。深拷贝原理和方法的学习能够帮助我们规范代码提高代码的有效性。通知深拷贝方法的学习能够更好地帮助我们解决因为拷贝方式不当而产生的bug。节约更多debug的时间。 下面我们来通过代码示例来详细介绍五种深拷贝的方法。 实现对象深拷贝的五种方法 1.json暴力转化 通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象。 var obj {name:123} var obj2 JSON.parse(JSON.stringify(obj))var arr [old, 1, true, [old1, old2], {old: 1}] var new_arr JSON.parse(JSON.stringify(arr)) console.log(new_arr);这种简单粗暴的方式有局限性当值为undefined、function、symbol会在转换过程中被忽略。JSON.stringify()不仅可拷贝数组还能拷贝对象但不能拷贝函数也不能解决循环引用问题 2.es6扩展运算符 var obj {name:123,age:13}; var obj2 {...obj}只能深度拷贝对象的第一层如果对象中的属性也是对象的话没有办法进行深度拷贝的。 3.for in循环遍历对象 var obj {name: 小明,age: 20}var obj1 {}for (var key in obj) {//遍历属性值深拷贝obj1[key] obj[key]}console.log(obj1);var deepCopy function(target) {// 只拷贝对象if (typeof target ! object) return target;// 根据obj的类型判断是新建一个数组还是一个对象var result Array.isArray(obj) ? [] : {};for (var key in target) {// 遍历obj,并且判断是obj的属性才拷贝(不能拷贝原型对象的属性)if (target.hasOwnProperty(key)) {// 判断属性值的类型如果是对象递归调用深拷贝result[key] typeof target[key] object ? deepCopy(target[key]) : target[key];}}return result; }其中上述方法一、方法三都解决不了循环引用的问题。 4.Object.assign()对象的合并 利用Object.assign(), 第一个参数必须是空对象 var obj {name:123,age:13}; var obj2 Object.assign({},obj1);5.利用循环和递归的方式 function deepClone(obj, newObj) {var newObj newObj || {};for (let key in obj) {if (typeof obj[key] object) {newObj[key] (obj[key].constructor Array) ? [] : {}deepClone(obj[key], newObj[key]);} else {newObj[key] obj[key]}}return newObj; }在循环递归中需要注意设置临界值typeof obj[key] ‘object’否则会造成死循环。 循环递归可以处理对象中嵌套数组或对象的问题。相当于第三种方法的优化。 实现对象浅拷贝的三种方法 1.concat、slice返回一个新数组 数组的浅拷贝可用concat、slice返回一个新数组的特性来实现拷贝 var arr [old, 1, true, null, undefined]; var new_arr arr.concat(); // 或者var new_arr arr.slice()也是一样的效果; new_arr[0] new; console.log(arr); // [old, 1, true, null, undefined] console.log(new_arr); // [new, 1, true, null, undefined]2.Object.assign()方法 let target {}; let source { a: { b: 2 } }; Object.assign(target, source); console.log(target); // { a: { b: 10 } }; source.a.b 10; console.log(source); // { a: { b: 10 } }; console.log(target); // { a: { b: 10 } };但是如果数组嵌套了对象或者数组的话用concat、slice拷贝只要有修改会引起新旧数组都一起改变了比如 var arr [{old: old}, [old]]; var new_arr arr.concat(); arr[0].old new; new_arr[1][0] new; console.log(arr); // [{old: new}, [new]] console.log(new_arr); // [{old: new}, [new]]3.遍历对象通用方法 实现思路遍历对象把属性和属性值都放在一个新的对象里 var shallowCopy function (obj) {// 只拷贝对象if (typeof obj ! object) return;// 根据obj的类型判断是新建一个数组还是一个对象var newObj Array.isArray(obj) ? [] : {};// 遍历obj,并且判断是obj的属性才拷贝for (var key in obj) {if (obj.hasOwnProperty(key)) {newObj[key] obj[key];}}return newObj; }如果数组元素是基本类型就会拷贝一份互不影响而如果是对象或者数组就会只拷贝对象和数组的引用这样我们无论在新旧数组进行了修改两者都会发生变化。这种叫浅拷贝。深拷贝就是指完全的拷贝一个对象即使嵌套了对象两者也相互分离修改一个对象的属性也不会影响另一个。 以上就是关于实现对象深拷贝与浅拷贝的方法的分享相信看完这篇文章的小伙伴们一定能运用这些方法在项目开发中。当然可能有不足的地方欢迎大家在评论区留言指正 下期文章将介绍vue antd项目实战中的深拷贝使用~感兴趣的小伙伴可以订阅本专栏方便后续了解学习~觉得这篇文章有用的小伙伴们可以点赞➕收藏➕关注哦~![在这里插入图片描述](https://img-blog.csdnimg.cn/a02b0a2c51f34d9bafe8754d275ead74.gif)
http://www.hkea.cn/news/14271320/

相关文章:

  • 安国网站建设wordpress 链接传参数
  • 网站服务器设置地点网站找回备案密码怎么不对
  • 提交您的网站昆明专门做网站
  • 乐清市做淘宝网站公司浙江省住房和城乡建设行业网站
  • 企业网站建设服务哪家好简约大方网站
  • 广西建设局网站首页爱站网长尾关键词
  • 企业网站建设组织人员可行性分析网页开发用到的技术
  • 山东中佛龙建设有限公司网站一站式企业建站制作
  • 友链对网站seo有帮助吗做网站没灵感
  • 一个网站上线需要什么Apple 手机网站制作
  • 万网可以花钱做网站wordpress 数据库连接错误
  • 银川网站建设哪家好如何利用源代码做网站
  • 响应式网站一般怎么设计王也天图片
  • 松溪网站建设wzjseo免费云网站一键生成app
  • 供需平台类网站建设跨境支付互联互通
  • 3合1网站建设电话wordpress 中文设置
  • 如何用word做网站地图白酒网站源码
  • 丽水网站建设费用如何自己弄一个网站
  • 网站开发流程人物WordPress添加在线商店
  • 网站建设前的分析公司概况了解贵阳营销网站建设公司
  • 建设企业网站进去无法显示wordpress node.js
  • 黑群晖wordpress建站服装网站建设策划书 百度文库
  • 平面设计工作室网站网站域名备案需要资料
  • 北京高端网站建设入门廊坊网络
  • 佛山免费自助建站模板免费注册126邮箱
  • 高端品牌网站建设兴田德润在那里重庆景点介绍
  • wordpress网站做成app建立门户网站的意义
  • 020网站模板Wordpress 防注入代码
  • 网站网页设计方案哪里建设网站不需要备案
  • 太原网站建设随州社交和门户网站的区别