```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>深拷贝</title>
</head>
<body>
<script>
//深拷贝:把一个对象中的属性,依次的,一个一个的复制到另一个对象中
var obj1 = {
name: "风斯托罗斯基",
age: 20,
car: ["奔驰", "宝马", "奥拓"],
dog: {
name: "哮天犬",
age: 2,
color: "黑色"
}
};
var obj2 = {};
//把a中的拷贝到b中
function extend(a, b) {
//遍历a这个对象中所有的属性
for (var key in a) {
var item = a[key]; //获取了a对象中的属性
if (item instanceof Array) {
b[key] = []; //在b对象中添加数组
extend(item, b[key]);
} else if (item instanceof Object) {
b[key] = {};
extend(item, b[key]);
} else {
b[key] = item;
}
}
}
extend(obj1, obj2); // 修改对象内容,另一个对象不会受到任何影响
console.dir(obj2);
console.dir(obj1);
</script>
</body>
</html>
```
- js应用场景
- js组成
- js书写位置
- 浮点数精度问题
- undefined与null的区别
- 数据类型转换
- 运算符优先级
- 代码调试
- 函数
- 函数的定义和调用
- 函数的return细节
- 函数是一种数据类型
- this的指向
- 函数成员
- 函数闭包
- 作用域
- 预解析
- js对象
- 对象的创建与调用
- new关键字
- this关键字
- 构造函数创建对象
- 事件
- 数据类型
- 继承
- 杂项
- 如何阻止标签的默认行为
- 为一个标签绑定或移除任何一个事件
- 如何阻止事件的冒泡行为
- 事件的三个阶段
- 移动元素的条件
- 匀速动画函数封装
- 变速动画函数封装
- 获取元素的css属性值
- 数据类型判断方法
- 创建对象的7种写法
- 如何继承
- 为js内置对象添加原型函数
- 将局部变量转换为全局变量
- call函数的用法
- 沙箱
- 浅拷贝
- 深拷贝
- 对象赋值会改变对象
- 解析URL中的字符串
- 格式化日期
- 获取当前浏览器类型
- Vue3.x
- 调式工具Vue Devtools