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

网站管理模板免费企业网站系统

网站管理模板,免费企业网站系统,网站建设技术团队,东莞非凡网站建设先放出实现浅拷贝和深拷贝的一些方法(直接食用)#xff1a; 1.浅拷贝#xff1a; 浅拷贝在拷贝对象的时候#xff0c;对于对象最外一层实现的是普通的值拷贝#xff0c;对于对象里面的对象是浅拷贝#xff0c;只复制地址不复制地址对应的值。 /* 方法1.1#xff1a;扩…先放出实现浅拷贝和深拷贝的一些方法(直接食用) 1.浅拷贝 浅拷贝在拷贝对象的时候对于对象最外一层实现的是普通的值拷贝对于对象里面的对象是浅拷贝只复制地址不复制地址对应的值。 /* 方法1.1扩展运算符最简单的方式 */ const originalObject { a: 1, b: 2, c: {d: 3} }; const shallowCopy { ...originalObject };originalObject.a 10; console.log(originalObject.a); // 输出 10 console.log(shallowCopy.a); // 输出 1originalObject.c.d 11; console.log(shallowCopy.c.d); // 输出 11 console.log(originalObject.c.d); // 输出 11/* 方法2Object.assign() */ const originalObject { a: 1, b: 2, c: { d: 3} }; const shallowCopy Object.assign({}, originalObject); originalObject.a 10; originalObject.c.d 11;console.log(originalObject.a); // 输出 10 console.log(shallowCopy.a); // 输出 1 console.log(originalObject.c.d); // 输出 11 console.log(shallowCopy.c.d); // 输出 11 /* 方法1.3自定义函数实现浅拷贝 */ function shallowCopyFun(obj) {// 只拷贝对象if (typeof obj ! object || obj null) {return obj;}// 根据 obj 的类型决定新对象是数组还是对象let newObj Array.isArray(obj) ? [] : {};// 遍历 obj并复制其自身属性到新对象for (let key in obj) {if (obj.hasOwnProperty(key)) {newObj[key] obj[key];}}return newObj; } const originalObject { a: 1, b: 2, c: { d: 3,e: 4 } }; const shallowCopy shallowCopyFun(originalObject);originalObject.a 10; console.log(shallowCopy.a); // 输出 1 console.log(originalObject.a); // 输出 10originalObject.c.d 11; console.log(shallowCopy.c.d); // 输出 11 console.log(originalObject.c.d); // 输出 112.深拷贝 /* 方法2.1Json对象实现深拷贝JSON 序列化和反序列化 */ const originalObject { a: 1, b: { c: 2 } }; const deepCopy JSON.parse(JSON.stringify(originalObject));originalObject.b.c 10; console.log(originalObject.b.c); // 输出 10 console.log(deepCopy.b.c); // 输出 2/* 方法2.2递归函数实现 */ function deepCopyFun(obj) {// 检查值是否是引用类型if (typeof obj ! object || obj null) {return obj;}if (obj instanceof Date) {return new Date(obj);}if (obj instanceof RegExp) {return new RegExp(obj.source, obj.flags);}if (obj instanceof Function) {return obj;}// 初始化一个新的数组或对象let newObj Array.isArray(obj) ? [] : {};for (let key in obj) {// 确保属性属于对象本身不是继承的if (obj.hasOwnProperty(key)) {// 递归复制每个属性newObj[key] deepCopyFun(obj[key]);}}return newObj; } const originalObject { a: 1, b: { c: 2 } }; const deepCopy deepCopyFun(originalObject);originalObject.b.c 10; console.log(originalObject.b.c); // 输出 10 console.log(deepCopy.b.c); // 输出 2 /* 方法2.3concat实现深拷贝concat(arr1, arr2,...) */ var arr [1,2,3] var newArr [].concat(arr) arr.push(4) console.log(arr:, arr); console.log(newArr:, newArr); /* arr: [ 1, 2, 3, 4 ]newArr: [ 1, 2, 3 ] *//* 方法2.4slice实现深拷贝slice(idx1, idx2) */ var arr [1,2,3] var newArr arr.slice() arr.push(4) console.log(arr:, arr); console.log(newArr:, newArr); /* arr: [ 1, 2, 3, 4 ]newArr: [ 1, 2, 3 ] *//* 方法2.5lodash实现深拷贝_.cloneDeep(value) value : 要深拷贝的值。 返回拷贝后的值 vue 中使用 a. npm i --save lodash 下载依赖b. import _ from lodash 在 组件 中引入 c. 用法和下面的一样 */ var objects [{ a: 1 }, { b: 2 }]; var deep _.cloneDeep(objects); console.log(deep[0] objects[0]); // false/* 方法2.6扩展符实现深拷贝 */ var a[1,2,3] var b[...a]; b.push(4); console.log(b);//1,2,3,4 console.log(a)//1,2,3为什么会有浅拷贝和深拷贝这要从javaScript数据类型说起。分为基本数据类型和引用数据类型。 基本类型数据都是按照值访问的直接保存和修改在变量里面实际的值。 值类型在存储变量中存储的是值的本身因此叫做值类型即string,Number,Boolean,Undefined,Null其中基本数据类型null返回的是一个空的对象object如果有一个变量我们以后打算存储为对象默认值可以设置成null。 引用类型数据是按照引用访问的即保存在变量对象中的是一个地址该地址与堆内存的实际值相关联。 引用数据类型在存储变量中存储的仅仅是地址引用因此叫做引用数据类型。即通过new关键字创建的对象(系统对象、自定义对象)如Object、Array、Date等。 操作系统控制栈但是它不控制堆。具体堆栈理解可以自行bing 引用类型的值是同时保存在栈内存和堆内存中的对象javascript不允许直接访问内存中的位置也就是说不能直接操作对象的内存空间那我们操作啥呢 实际上是操作对象的引用 所以引用类型的值是按引用访问的。 准确地说引用类型的存储需要内存的栈区和堆区堆区是指内存里的堆内存共同完成栈区内存保存变量标识符和指向堆内存中该对象的指针也可以说是该对象在堆内存的地址。 基本数据类型-在百度上大多数都是说存在栈中的。从知乎回答找到正确答案link。即 字符串 存在堆里栈中为引用地址如果存在相同字符串则引用地址相同。 数字 小整数存在栈中其他类型存在堆中。 其他类型引擎初始化时分配唯一地址栈中的变量存的是唯一的引用。 所以这里我们在来说说深拷贝和浅拷贝的区别 浅拷贝只复制指向某个对象的指针而不是复制对象本身新旧对象共享一块内存。深拷贝复制并创建一个一模一样的对象不共享内存修改新的对象旧对象保持不变。
http://www.zqtcl.cn/news/287292/

相关文章:

  • 网站存在的缺陷编程的基础知识
  • flash同视频做网站天津建设工程信息网投标信息系统
  • 湛江做网站开发手机网址大全主页网址
  • 平面网站设计如何租用网站服务器
  • 课程视频网站建设的必要性专利减缓在哪个网站上做
  • 正规品牌网站设计品牌网站建设开发 脚本语言
  • 潍坊模板建站定制网站规划管理部门的网站建设
  • 光明楼网站建设九一人才网赣州招聘官网
  • 如何做网站监控wordpress修改文章点赞数
  • 佛山高端网站建设报价网站的建设属于无形资产
  • 永川网站设计wordpress+用户前台
  • 晋城客运东站网站开发公司装修通知告示怎么写
  • 北京做手机网站的公司哪家好完整的网站开发
  • 建立网站的内容规划长沙网络推广哪家
  • 网站建设及优化教程百度网站优化排名
  • 医院网站推广渠道网站关键词排名不稳定
  • 类网站建设陕西省建设资格注册中心网站
  • 网站横幅图片网页设计怎么创建站点
  • 网站建设页面设计图片开个送快餐网站怎么做
  • 北京免费网站建设模板下载南江县建设局网站
  • 温岭手机网站建设义乌市网站建设
  • 西安网站制作费用哪家装修公司比较好的
  • 硅谷网站开发薪酬wordpress热门吗
  • 红酒营销型网站建设天一建设网站
  • 做网站建设公司哪家好安徽省住房建设部官方网站
  • 网站被黑咋样的柳州正规网站制作公司哪家好
  • 莱芜网站开发代理四川网络推广服务
  • 应该知道的网站网站全网建设莱芜
  • 北京网站页设计制作广州专业网站改版
  • 重庆网站建设建站收费免费外链网盘