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

软件公司 网站模板网站运营报告

软件公司 网站模板,网站运营报告,it培训费用大概多少钱,做家电网站好文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象:Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

文章目录

        • 1. 拷贝
          • 1. 浅拷贝
          • 2. 深拷贝
        • 2. 异常处理

1. 拷贝

这里指的拷贝是指拷贝引用类型的数据(对象)

1. 浅拷贝

拷贝对象:Object.assign() 或者 {…obj} 展开运算符

const obj = {name:'liuze',age:23
}
const o = {...obj};
o.age = 22;
console.log(o);
console.log(obj);
// {name: 'liuze', age: 22}
// {name: 'liuze', age: 23}

存在一个问题,如下:

const obj = {name:'liuze',age:23,obj2:{name:'hh'}
}
const o = {...obj};
o.obj2.name = 'liuze';
console.log(o);
console.log(obj);
// 都为
/*
{	age: 23name: "liuze"obj2: {name: 'liuze'}
}
*/

如果是简单数据类型拷贝值,引用数据类型拷贝的是地址(简单理解:如果是单层对象,没有问题,如果是多层就有问题)

直接赋值和浅拷贝的区别

  • 直接赋值的方法,只要是对象,都会相互影响,因为是直接拷贝对象栈里面的地址
  • 浅拷贝如果是一层对象,不相互影响,如果出现多层对象拷贝还会相互影响
2. 深拷贝

拷贝的是对象,不是地址

常见方法:

  1. 通过递归实现深拷贝

    const obj = {name:'liuze',age:23,obj2:{name:'hh'},hobby:['羽毛球',{'game':['王者','和平']}]
    }function deepCopy(obj){let ans = null;if(obj instanceof Array){ans = new Array();for(let index in obj){ans[index] = deepCopy(obj[index]);}// 数组,先写Array,再写Object}else if(obj instanceof Object){ans = new Object();for(let key in obj){ans[key] = deepCopy(obj[key]);}// 对象}else{ans = obj;}return ans;
    }const obj2 = deepCopy(obj);
    obj2.obj2.name = 'liuze';
    obj2.hobby[0] = '足球';
    obj2.hobby[1].game[0] = '王者荣耀';
    console.log(obj2);
    console.log(obj);
    

    请添加图片描述

    上述深拷贝代码有一定问题,只是拷贝数据没有问题,但是如果对象中有函数定义。。。,是有问题的

  2. lodash/cloneDeep

    lodash介绍文档在这:lodash,lodash.js下载链接为:lodash.js

    <!DOCTYPE html>
    <html>
    <head><title>javascript</title>
    </head>
    <body></body>
    <script type="text/javascript" src="lodash.js"></script>
    <script type="text/javascript">const obj = {name:'liuze',age:23,obj2:{name:'hh'},hobby:['羽毛球',{'game':['王者','和平']}]}const obj2 = _.cloneDeep(obj);obj2.hobby[0] = '足球';console.log(obj);console.log(obj2);</script>
    </script>
    </html>
    

    运行结果:
    在这里插入图片描述

  3. 通过JSON.stringify()实现

    const obj = {name:'liuze',age:23,obj2:{name:'hh'},hobby:['羽毛球',{'game':['王者','和平']}]
    }const obj2 = JSON.parse(JSON.stringify(obj));
    obj2.hobby[0] = '足球';
    console.log(obj);
    console.log(obj2);
    
2. 异常处理

异常处理是指预估代码执行过程中可能发生的错误,然后最大程度的避免错误的发生导致整个程序无法继续运行

  • throw抛异常

    1. throw抛出异常信息,程序也会终止执行
    2. throw后面跟的是错误提示信息
    3. Error对象配合throw使用,能够设置更详细的错误信息
    function sum(x,y){if(!x || !y){throw new Error('传入参数异常');}return x + y;
    }console.log(sum());
    

    在这里插入图片描述

  • try/catch/finally捕获异常

    <!DOCTYPE html>
    <html>
    <head><title>javascript</title>
    </head>
    <body><p>123</p>
    </body>
    <script type="text/javascript">function fn(){try{const p = document.querySelector('.p');p.style.color = 'red';}catch(err){console.log(err.message);return}finally{console.log('11');}}fn();
    </script>
    </script>
    </html>
    

    运行结果:
    在这里插入图片描述

    1. try。。。catch 用于捕获错误信息
    2. 将预估可能发生错误的代码卸载try代码段中
    3. 如果try代码段中出现错误后,会执行catch代码段,并截获错误信息
    4. finally不管是否有错误,都会执行
  • debugger

    用于调试的时候使用

    function fn(){debugger;console.log('哈哈');
    }fn();
    
http://www.yayakq.cn/news/514460/

相关文章:

  • 应不应该购买老域名建设新网站网站建设绪论
  • 没有网站怎么快速做cps网站做推广需要什么条件
  • 保险网站建设优缺点公司网站的定义
  • intitle 无线网站制作嘉兴网站快速排名优化
  • 网站开发与设计实训报告1000字wordpress编辑插件
  • 货运配载做网站建一个网站素材哪里来
  • 成都市建设厅网站查询全国最大型网站建设
  • 网站后台登入不了出现验证码错误WordPress标题换行显示
  • 天威虎建设集团官方网站无锡公司网站制作
  • 营销型网站跟云网站html文档模板
  • 佛山国内快速建站网站建设 福步
  • 淘客网站要怎么做温州网站排名优化
  • 太原站建设有多长时间国际1688网站
  • wordpress去掉购物车seo推广学院
  • wordpress中国网站模板wordpress 禁止保存
  • 做网站商城的目的是什么哪个汽车网站好
  • 网站建设中幻灯片如何加链接配置jsp网站开发环境
  • 网站正在建设中亚洲江苏省城乡建设厅网站
  • 移动端网站建设方案提升学历官网报名多少钱
  • 现在市面网站做推广好制作一个网页需要哪几个步骤
  • 网站照片要求56m做图片视频的网站是什么
  • 网站空间安装深一集团的网站谁做的
  • 公司网站建设费用怎么入账湖州网站建设推广
  • 建设p2p网站123
  • wordpress网站维护教程wordpress站点的临时域名
  • 公司网站后台上怎么上传图片呢推荐郑州网站建设公司
  • 网站建设都需要什么文案电子商务网站建设与维护 教材
  • 企业微网站怎么做免费的网站域名查询方法有哪些
  • 网站建设书籍在线阅读专注专业网站建设
  • jq网站模板做网站原型现成的框架