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

萧县做网站关键词点击价格查询

萧县做网站,关键词点击价格查询,做测试的网站,十大景观设计网站JavaScript 里的深拷贝和浅拷贝 JS中数据类型分为基本数据类型和引用数据类型。 基本类型值指的是那些保存在栈内存中的简单数据段。包含Number,String,Boolean,Null,Undefined ,Symbol。 引用类型值指的是那些保存…

JavaScript 里的深拷贝和浅拷贝

JS中数据类型分为基本数据类型引用数据类型

基本类型值指的是那些保存在内存中的简单数据段。包含NumberStringBooleanNullUndefinedSymbol

引用类型值指的是那些保存在内存中的对象,所以引用类型的值保存的是一个指针,这个指针指向对象的地址。引用类型包含Object 类型、Array 类型、Date 类型、RegExp 类型、Function 类型 等。

因为引用类型保存的是指向存储地址的指针,所以我们直接把一个引用类型赋值给另外一个引用类型时候,相当于是把指针赋值过去,实际上两个对象的存储地址是一样的。因此也就导致这两个对象共用地址,只要地址里的数据被修改后,两个对象的值都会改变。

浅拷贝的实现方式

1.Array.concat()
const arr = [1,2,3];
const copy = arr.concat(); 
console.log(copy); // 输出: [1, 2, 3]
2.Object.assign()
const arr= [1,2,3];
const copy1 = Object.assign({}, arr); 
console.log(copy); // 输出: [1, 2, 3]
3.slice()
const arr= [1,2,3];
let copy = arr.slice();  
console.log(copy); // 输出: [1, 2, 3]
4.扩展运算符 …
const arr= [1,2,3];
const copy = [...arr];
console.log(copy); // 输出: [1, 2, 3]

深拷贝

1.JSON.parse()和JSON.stringify()
const obj1 = {x: 1, y: {m: 1}
};
const obj2 = JSON.parse(JSON.stringify(obj1));
console.log(obj2) //{x: 1, y: {m: 1}}

1.这是最简单的方法之一,但它有一些限制,比如不能正确处理函数、undefinedSymbol、循环引用等特殊类型的值。

2.它会抛弃对象的constructor。也就是深拷贝之后,不管这个对象原来的构造函数是什么,在深拷贝之后都会变成Object

3.如果对象中存在循环引用的情况无法正确处理。

2. 递归复制

通过递归函数手动复制对象的每个属性。这种方法可以处理更复杂的对象和特殊情况(如循环引用)。

function deepClone(obj, hash = new WeakMap()) {  if (obj === null) return null; // null 的情况  if (obj instanceof Date) return new Date(obj); // 日期对象直接返回一个新的日期对象  if (obj instanceof RegExp) return new RegExp(obj); // 正则对象直接返回一个新的正则对象  //hash判断该属性是否被复制// 如果循环引用了就用 weakMap 来解决  if (hash.has(obj)) return hash.get(obj);  let allDesc = Object.getOwnPropertyDescriptors(obj);  let cloneObj = Object.create(Object.getPrototypeOf(obj), allDesc);  hash.set(obj, cloneObj);  for (let key of Reflect.ownKeys(obj)) {  if (typeof obj[key] === 'object' && obj[key] !== null) {  cloneObj[key] = deepClone(obj[key], hash);  } else {  cloneObj[key] = obj[key];  }  }  return cloneObj;  
}  // 使用示例  
let original = { a: 1, b: { c: 2 } };  
original.b.d = original; // 创建一个循环引用  
let clone = deepClone(original);  
console.log(clone);  
http://www.tj-hxxt.cn/news/34361.html

相关文章:

  • wordpress 不连接外网站长工具的使用seo综合查询运营
  • 做同城服务网站比较成功的网站电脑培训机构
  • 推荐聊城做网站的公司杭州百度竞价推广公司
  • gmail企业邮箱seo网站建设优化什么意思
  • 想自己做网站 有免费的吗免费自助建站模板
  • 网站如何建设时时彩bt磁力种子
  • 疏通下水道网站怎么做福州seo推广公司
  • 学院网站建设网络营销策略分析报告
  • seo策略是什么意思大型seo公司
  • 化妆品行业网站建设方案网页搜索排名提升
  • 公司网站应该是市场部做吗网站排名seo培训
  • 给你一个网站怎么做长沙优化排名推广
  • 云商城的网站建设产品推广方案怎么写
  • 广州网站定制开发推广百度百科
  • 外贸网站建设流程洛阳网站建设优化
  • 做网站怎么用国处服务器seo百度快照优化公司
  • 做seo学网站广点通
  • 河南网站建设推广运营google play官网下载
  • 潍坊学网站建设深圳网络营销技巧
  • 泰安网站开发哪家便宜东莞网站推广的公司
  • 昆山广告设计制作公司宝鸡seo
  • 模板建站seo优化曹操博客seo
  • 创意网站建设欣赏百度推广的方式有哪些
  • 网站建设宣传单页ip域名解析查询
  • 链接网站开发需要多少钱关键词优化报价推荐
  • 龙华做棋牌网站建设多少钱东莞网站建设优化技术
  • 做公司网站的模板免费永久个人域名注册
  • 如何做网站网页免费快速建站哪个平台好
  • 网站集约化泉州seo外包
  • wordpress 2007 后门成都自然排名优化