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

网站背景动图怎么做/云南疫情最新消息

网站背景动图怎么做,云南疫情最新消息,厦门网站制作建设,开发网站心得码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。 每天都提供一道关于前端面试中常见的题目。并且我建立了一个QQ群(425554900),QQ群内提供大量面试题目和…

码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。

在这里插入图片描述

每天都提供一道关于前端面试中常见的题目。并且我建立了一个QQ群(425554900),QQ群内提供大量面试题目和答案,包括CSDN每日更新的题目答案。欢迎大家加群交流,打卡,共同进步。

今日题目:

说一下深拷贝如何解决循环引用问题?


题解:

看个例子:

function deepCopy(obj) {const res = Array.isArray(obj) ? [] : {};for (let key in obj) {if (typeof obj[key] === "object") {res[key] = deepCopy(obj[key]);} else {res[key] = obj[key];}}return res;
}
var obj = {a: 1,b: 2,c: [1, 2, 3],d: { aa: 1, bb: 2 },
};
obj.e = obj;
console.log("obj", obj); // 不会报错const objCopy = deepCopy(obj);
console.log(objCopy);

从例子中可以看到,当存在循环引用的时候,deepCopy会报错,栈溢出。

  • obj对象存在循环引用时,打印它是不会栈溢出
  • 深拷贝 obj 时,才会导致溢出

循环应用问题解决

  • 即:目标对象存在循环应用时报错处理
    大家都知道,对象的key是不能是对象的。
{{a:1}:2}
// Uncaught SyntaxError: Unexpected token ':'

参考解决方式一:使用weekmap;
解决循环引用问题,我们可以额外开辟一个存储空间,来存储当前对象和拷贝对象的对应关系。

这个存储空间,需要可以存储 key-value 形式的数据,且key 可以是一个引用类型。

我们可以选择 WeakMap 这种数据结构:

  • 检查 WeakMap 中有无克隆过的对象
  • 有,直接返回
  • 没有,将当前对象作为 key ,克隆对象作为 value 进行存储
  • 继续克隆
function isObject(obj) {return (typeof obj === "object" || typeof obj === "function") && obj !== null;
}
function cloneDeep(source, hash = new WeakMap()) {if (!isObject(source)) return source;if (hash.has(source)) return hash.get(source); // 新增代码,查哈希表var target = Array.isArray(source) ? [] : {};hash.set(source, target); // 新增代码,哈希表设值for (var key in source) {if (Object.prototype.hasOwnProperty.call(source, key)) {if (isObject(source[key])) {target[key] = cloneDeep(source[key], hash); // 新增代码,传入哈希表} else {target[key] = source[key];}}}return target;
}

参考解决方式二:
可以用Set,发现相同的对象直接赋值,也可用Map。

const o = { a: 1, b: 2 };
o.c = o;function isPrimitive(val) {return Object(val) !== val;
}
const set = new Set();
function clone(obj) {const copied = {};for (const [key, value] of Object.entries(obj)) {if (isPrimitive(value)) {copied[key] = value;} else {if (set.has(value)) {copied[key] = { ...value };} else {set.add(value);copied[key] = clone(value);}}}return copied;
}

我会帮大家把每一天的题目和超级详细的答案整理好,欢迎加群领取当日题目答案和以往题目答案。


关注公众号后,回复【前端面试题】,领取大量前端面试题汇总pdf资料
在这里插入图片描述

http://www.jmfq.cn/news/5180545.html

相关文章:

  • 什么网站做兼职可靠/女教师遭网课入侵视频大全
  • 心理咨询中心网站模板/2345纯净版推广包
  • 网站集约化建设情况汇报/如何写软文赚钱
  • 永年县网站/seo优化网络公司排名
  • 建站宝盒成品网站演示/乐陵seo优化
  • 做公务员题目的网站/河北网站优化公司
  • 做国际物流需要自己的网站吗/优书网首页
  • 北京网站百度推广/长春刚刚最新消息今天
  • dedecms微电影网站模板/搜狗引擎
  • 淄博网站制作服务/域名关键词排名查询
  • 阳春网站建设/广州seo全网营销
  • 南京网站制作哪家好/网店推广方法有哪些
  • 百度给企业做网站吗/广州抖音推广公司
  • 网站建设找盖亚科技/在线识别图片来源
  • 做网站的收益在哪/王通seo教程
  • 武汉做网站哪里好/优化疫情防控措施
  • 杭州企业网站建设/知乎关键词排名
  • 平度网站建设ld4/推介网
  • 阿里妈妈 该网站的域名已经被其他人绑定/seo网站推广经理
  • 面试建设单位在哪个网站/网络推广工作内容
  • 万网服务器网站建设/网站友链查询源码
  • 阜阳网站建设价格/竞价排名点击器
  • 苏州市建设安全监督局网站/排名优化方案
  • 襄州区城乡建设局网站/江门seo
  • 芸志建站怎么建立网站/网络公关公司收费
  • 设计网站会员/海外营销
  • 餐饮企业网站建设方案书/sem竞价推广怎么做
  • 网站使用说明书/免费的行情网站app
  • 网站建设标书模板下载/ks免费刷粉网站推广
  • 深圳做棋牌网站建设找哪家公司好/百度推广免费