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

做个企业网站服装定制app

做个企业网站,服装定制app,安丘做网站的公司,学校手机网站模板目录 1、JavaScript 中存在两⼤数据类型#xff1a; 2、 浅拷贝方法#xff1a; 2.1 Object.assign 2.2 slice() 2.3 concat() 2.4 拓展运算符 3、深拷贝方法 3.1 _.cloneDeep() 3.2 jQuery.extend() 3.3 JSON.stringify() 3.4 循环递归 4、浅拷贝和深拷贝的…  目录 1、JavaScript 中存在两⼤数据类型  2、 浅拷贝方法 2.1  Object.assign 2.2  slice() 2.3   concat()  2.4  拓展运算符 3、深拷贝方法 3.1  _.cloneDeep() 3.2  jQuery.extend() 3.3  JSON.stringify() 3.4  循环递归 4、浅拷贝和深拷贝的区别 1、JavaScript 中存在两⼤数据类型  • 基本类型 • 引⽤类型 基本类型数据保存在在栈内存中 引⽤类型数据保存在堆内存中引⽤数据类型的变量是⼀个指向堆内存中实际对象的引⽤存在栈中 2、 浅拷贝方法 在 JavaScript 中存在浅拷⻉的现象有 • Object.assign • Array.prototype.slice() , Array.prototype.concat() • 使⽤拓展运算符实现的复制 function shallowClone(obj) { const newObj {}; for(let prop in obj) { if(obj.hasOwnProperty(prop)){ // 仅检查对象自身是否包含指定属性不追溯原型链newObj[prop] obj[prop]; } } return newObj; } 2.1  Object.assign var obj { age: 18, nature: [smart, good], names: { name1: fx, name2: xka }, love: function () { console.log(fx is a great girl) } } var newObj Object.assign({}, fxObj); 2.2  slice() const fxArr [One, Two, Three] const fxArrs fxArr.slice(0) fxArrs[1] love; console.log(fxArr) // [One, Two, Three] console.log(fxArrs) // [One, love, Three] 2.3   concat()  const fxArr [One, Two, Three] const fxArrs fxArr.concat() fxArrs[1] love; console.log(fxArr) // [One, Two, Three] console.log(fxArrs) // [One, love, Three] 2.4  拓展运算符 const fxArr [One, Two, Three] const fxArrs [...fxArr] fxArrs[1] love; console.log(fxArr) // [One, Two, Three] console.log(fxArrs) // [One, love, Three] 3、深拷贝方法 深拷⻉开辟⼀个新的栈两个对象属完成相同但是对应两个不同的地址修改⼀个对象的属性不 会改变另⼀个对象的属性 常⻅的深拷⻉⽅式有 • _.cloneDeep() • jQuery.extend() • JSON.stringify() • ⼿写循环递归 3.1  _.cloneDeep() const _ require(lodash); const obj1 { a: 1, b: { f: { g: 1 } }, c: [1, 2, 3] }; const obj2 _.cloneDeep(obj1); console.log(obj1.b.f obj2.b.f);// false 3.2  jQuery.extend() const $ require(jquery); const obj1 { a: 1, b: { f: { g: 1 } }, c: [1, 2, 3] }; const obj2 $ .extend(true, {}, obj1); console.log(obj1.b.f obj2.b.f); // false 3.3  JSON.stringify() const obj2JSON.parse(JSON.stringify(obj1));// 但是这种⽅式存在弊端会忽略 undefined 、 symbol 和 函数const obj { name: A, name1: undefined, name3: function() {}, name4: Symbol(A) } const obj2 JSON.parse(JSON.stringify(obj)); console.log(obj2); // {name: A}  但有局限无法实现对象中方法的深拷贝、值为undefined的key等。 // 无法对 对象中的方法 进行深拷贝 const obj { fn: () console.log(test) }; const copy JSON.parse(JSON.stringify(obj)); // { }// undefined 和 Symbol 类型属性会消失 // NaN 和 Infinity 会被转为 null const obj { a: undefined, b: Symbol(), c: NaN }; const copy JSON.parse(JSON.stringify(obj)); // { c: null } 3.4  循环递归 思路步骤 处理基本值‌当传入值为null或非object类型时直接返回原值。不拷贝对基本类型直接返回引用类型才进行拷贝操作‌检查循环引用‌用WeakMap缓存已拷贝对象遇到直接返回‌特殊对象处理‌单独拷贝日期和正则对象‌初始化容器‌区分数组和普通对象创建空结构‌递归拷贝属性‌遍历每个属性并递归调用自身 // 使用 WeakMap 存储已拷贝对象遇到重复引用直接返回 // hash.has(obj) 是哈希表结构中用于检测键是否存在的核心方法 // hash.get(obj) 是哈希表结构中通过键获取对应值的核心操作 // hash.set(obj, clone) 是哈希表存储键值对的核心操作 // 仅检查对象自身是否包含指定属性不追溯原型链 function deepClone(obj, hash new WeakMap()) {// 基础类型直接返回if (obj null || typeof obj ! object) return obj; // 当传入值为null或非object类型时直接返回原值// 用WeakMap缓存已拷贝对象遇到直接返回if (hash.has(obj)) return hash.get(obj); // 处理循环引用// 特殊对象处理if (obj instanceof Date) return new Date(obj);if (obj instanceof RegExp) return new RegExp(obj);// 初始化容器const clone Array.isArray(obj) ? [] : {};hash.set(obj, clone);// 递归拷贝for (let key in obj) {if (obj.hasOwnProperty(key)) {clone[key] deepClone(obj[key], hash);}}return clone; } 4、浅拷贝和深拷贝的区别 前提为拷⻉类型为引⽤类型的情况下 • 浅拷⻉是拷⻉⼀层属性为对象时浅拷⻉是复制两个对象指向同⼀个地址 • 深拷⻉是递归拷⻉深层次属性为对象时深拷⻉是新开栈两个对象指向不同的地址 声明变量时 ◦ 简单类型的值存放在栈中在栈中存放的是对应的值 ◦ 引⽤类型对应的值存储在堆中在栈中存放的是指向堆内存的地址 赋值变量时 ◦ 简单类型赋值是⽣成相同的值两个对象对应不同的地址 ◦ 复杂类型赋值是将保存对象的内存地址赋值给另⼀个变量。也就是两个变量指向堆内存中同⼀个对象
http://www.hkea.cn/news/14443808/

相关文章:

  • 中卫网站设计在哪里本地服务器公网ip wordpress
  • 如何做网站答题领红包链接照片展示网站模板免费下载
  • 交换链接适用于哪些网站制作网页需要学什么语言
  • 如何用付费音乐做视频网站名片网页设计代码
  • 请人做网站需要什么做游戏网站主页的素材
  • 沈阳的网站建设网站商城建设员招聘
  • o2o平台有哪些网站wordpress音乐分享
  • 深圳建设银行分行网站商丘网吧什么时候恢复营业
  • 哔哩网站开发需求分析模板wordpress 开发者
  • 响应式 网站 开发wordpress 用户密码加密
  • 江苏省建设局网站大连建网站电话
  • 电影网站标题怎么做流量多济南资海网站建设公司
  • 网站备案登录o2o平台网站建设
  • 网站被收录要怎么做网页设计与网站建设全攻略pdf
  • 交换友情链接的网站标准是什么江苏设计网站电话
  • 山西cms建站系统价格如何申请域名建网站
  • 网站建设 配资信贷员在哪个网站做推广
  • 电子商务网站建设中的重要性wordpress 美拍插件
  • 多语言 网站源码小型网站开发
  • 专门做布料的网站百度竞价查询
  • 公司网站应该包括哪些内容网站会员注册系统下载
  • wordpress获取地址栏参数谷歌广告优化
  • 网站的详细设计建设银行投诉网站
  • 网站建设销售需要哪些重庆整合营销网站建设
  • 达孜网站建设在线制图生成器
  • 某网络公司网站源码 蓝色建站企业网站源码北京网站优化经理
  • 网站域名注册服务商图片下载+wordpress
  • 张家港建设银行网站电子工程网络信息技术专业
  • 国际网站开发客户企业常见问题及解决方案
  • 如何找百度做网站个人简历 网站开发