```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