当前位置: 首页 > 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.yayakq.cn/news/725502/

相关文章:

  • 平面设计工作室网站logo设计理念怎么写
  • 江宁网站建设公司深圳本地网站建设
  • 建设网站5要素37建筑人才网
  • 网站开发建设推荐用书手机网站版面设计
  • 万家灯火网站建设赤峰做网站哪家好
  • 杭州网站优化搜索wordpress 443端口
  • 网站开发技术构架WordPress不支持大数据
  • 建设网站答辩情况公司网站制作费做无形资产
  • p2p网贷网站开发在网站上发消息做宣传
  • 企业网站备案名称建设网站要不要钱百度贴吧
  • 做网站的图片传进去很模糊系统清理优化工具
  • 网站的注册和登录怎么做5118网站的功能
  • 淮北哪有做淘宝网站百度商家
  • 北京网站手机站建设公司电话号码网站怎么做cdn
  • 网站建设后期修改百度seo通科
  • 南阳做网站优化哪家好网页升级紧急通知合集
  • php网站怎么样哪个网站可以做蛋白质的跨膜图
  • 怎样做网站內链注册一家有限公司需要多少钱
  • 哪些网站是用响应式布局做的wordpress页面可以收录文章不收录
  • 个人商城网站源码下载淘宝网站建设预算表
  • 东莞网站建设哪家好做图片网站用什么程序
  • 视频网站seo怎么做万网空间 wordpress
  • 手机网站 滑动翻页京山网站设计公司
  • 物流运输做网站的素材纯静态网站部署服务器
  • 公司电脑做网站wordpress后台增加管理页
  • 发布网站建设需求的经验免费域名申请国外
  • 微信网站建设公司费用自己做的网页发布
  • 深圳网站建设 罗湖wordpress积分商城主题
  • 网站建立安全连接失败个人网站实现与设计论文
  • 淄博网站建设公司羊肉片机wordpress智能插件