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

邵阳 网站开发 招聘网站建设推广渠道

邵阳 网站开发 招聘,网站建设推广渠道,学校网站资源建设,注册公司核名的流程文章目录 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.15wanjia.com/news/181269.html

相关文章:

  • 怎样管理一个俄语网站网站应用开发
  • 网站建设工作简介北京做企业网站
  • 网站吸引客户西安 企业网站建设
  • 视频制作网站素材九九9九九9视频在线观看
  • 网站开发工资一般多少郑州网站优化怎样做
  • 类似闲鱼网站怎么做网站盒子怎么做
  • 免费行情网站推荐手机网站自适应宽度
  • 帝国建站程序中国招标投标网
  • 网站什么内容四川省建设勘察设计网站
  • 专门做化妆的招聘网站南安seo教程
  • 怎么才能成功做网站怎么看国外设计网站
  • 怎么给网站做优化wordpress字体编辑器
  • 重庆工信部网站四川省住房和城乡建设厅网站官网
  • 租二级目录做网站做土地租赁买卖的网站有哪些
  • 深圳沙井公司网站建设html成品网页免费模板下载
  • 戏曲网站建设的可行性分析制作小程序难吗
  • 长春网站公司哪家好建宣传网站
  • 购买域名后怎么建网站医疗器械四大龙头企业
  • 品牌词类的网站怎么做优化友情链接有用吗
  • dlink nas做网站网络门户网站
  • 苏州外贸营销网站建设企业网站备案资料样本
  • 企业网站托管常见问题建立门户网站需要什么技术
  • 高端网站鉴赏龙华网站建设推广外包
  • 室内设计师之路网站现在做个app多少钱
  • 网站 先建设还是先等级保护备案建筑网站案例
  • dedecms做国外网站网店推广发展趋势
  • 网站开发教程视频青岛网站厉害的公司
  • 欢迎进入中国建设银行网站泰安网站建设报价
  • 做网站怎么修改网址好看影视大全免费下载安装
  • 宁波快速制作网站网络营销者的应聘要求