首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
请详细介绍Javascript中的数据类型?区别?
Javscript数组的常用方法有哪些?
Javascript字符串的常用方法有哪些?
Javascript 中的类型转换机制
== 和 ===区别,分别在什么情况使用
拷贝浅拷贝的区别?如何实现一个深拷贝?
请介绍你对Javascript中闭包的理解
请介绍你对javascript中作用域链的理解
什么是JavaScript原型,原型链 ?
请介绍Javascript如何实现继承
请介绍你对javascript中this对象的理解
JavaScript中执行上下文和执行栈是什么?
请介绍JavaScript中的事件模型
typeof 与 instanceof 区别
解释下什么是事件代理?应用场景?
请介绍new操作符具体干了什么
ajax原理是什么?如何实现?
bind、call、apply 区别?如何实现一个bind?
请介绍你对正则表达式的理解?应用场景?
请介绍你对事件循环的理解
DOM常见的操作有哪些?
请详细介绍你对BOM的理解,常见的BOM对象你了解哪些?
举例说明你对尾递归的理解,有哪些应用场景。
请介绍 JavaScript 中内存泄漏的几种情况。
Javascript本地存储的方式有哪些?区别及应用场景?
请介绍你对函数式编程的理解?优缺点?
Javascript中如何实现函数缓存?函数缓存有哪些应用场景?
请介绍 Javascript 数字精度丢失的问题,如何解决?
当前位置:
首页>>
技术小册>>
JavaScript面试指南
小册名称:JavaScript面试指南
深拷贝和浅拷贝都是用来复制一个对象的内容到另一个对象中的方法。 浅拷贝会复制一个对象的引用,新对象和原对象会指向同一个内存地址。修改新对象的属性值也会影响原对象的属性值。例如: ``` const obj1 = {a: 1, b: {c: 2}}; const obj2 = obj1; // 浅拷贝,obj2和obj1指向同一个内存地址 obj2.a = 3; obj2.b.c = 4; console.log(obj1.a); // 3 console.log(obj1.b.c); // 4 ``` 而深拷贝会复制一个对象的值,新对象和原对象的值相同,但是指向不同的内存地址,修改新对象的属性值不会影响原对象的属性值。例如: ``` const obj1 = {a: 1, b: {c: 2}}; const obj2 = JSON.parse(JSON.stringify(obj1)); // 深拷贝,使用JSON序列化和反序列化方法 obj2.a = 3; obj2.b.c = 4; console.log(obj1.a); // 1 console.log(obj1.b.c); // 2 ``` 在实现一个深拷贝时,可以使用递归方法遍历对象的属性,将每个属性复制到新对象中。以下是一个简单的实现: ``` function deepCopy(obj) { if (typeof obj !== 'object' || obj === null) { // 非对象和null直接返回 return obj; } const newObj = Array.isArray(obj) ? [] : {}; // 判断是数组还是对象,创建一个新的空数组或对象 for (let key in obj) { // 遍历对象的属性 if (Object.prototype.hasOwnProperty.call(obj, key)) { // 判断是否是对象自身的属性 newObj[key] = deepCopy(obj[key]); // 递归深拷贝 } } return newObj; } const obj1 = {a: 1, b: {c: 2}}; const obj2 = deepCopy(obj1); // 深拷贝 obj2.a = 3; obj2.b.c = 4; console.log(obj1.a); // 1 console.log(obj1.b.c); // 2 ```
上一篇:
== 和 ===区别,分别在什么情况使用
下一篇:
请介绍你对Javascript中闭包的理解
该分类下的相关小册推荐:
javascript设计模式原理与实战
剑指javascript-ES6
零基础学JavaScript
编程入门课:Javascript从入门到实战
npm script实战构建前端工作流
剑指javascript
经典设计模式Javascript版
Javascript-ES6与异步编程
JavaScript入门与进阶
Javascript编程指南
Javascript重点难点实例精讲(一)
Flutter核心技术与实战