淺拷貝與深拷貝程式碼(javascript)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 淺拷貝只拷貝第一層,深一層的只拷貝拷貝地址
var b={
id:1,
name:"name",
msg:{
age:20
}
}
//老方法迴圈淺拷貝
var o={};
for (var k in b){
o[k]=b[k];
}
console.log(o);
// msg屬於深一層,所以拷貝地址,一個改變了就都改變,o裡面也會變
o.msg.age=2;
console.log(b);
// Object.assign是淺拷貝的方法,將後面的拷貝進第一個
Object.assign(o,b);
console.log(o);
console.log("---深拷貝deepCopy---");
var obj={
id:1,
name:"andy",
msg:{
age:18
}
}
var ob={}
//深拷貝全部拷貝,而且不會因為值改變而改變值.
function getDeep(newObject,oldObject){
for (var k in oldObject){
if (oldObject[k] instanceof Array){
newObject[k]=[];
getDeep(newObject[k],oldObject[k]);
}else if (oldObject[k] instanceof Object){
newObject[k]={};
getDeep(newObject[k],oldObject[k]);
}else{
newObject[k]=oldObject[k];
}
}
}
getDeep(ob,obj);
console.log(ob);
</script>
</body>
</html>
相關文章
- JavaScript中的淺拷貝與深拷貝JavaScript
- 【JavaScript】物件的淺拷貝與深拷貝JavaScript物件
- javascript 淺拷貝VS深拷貝JavaScript
- JavaScript深拷貝和淺拷貝JavaScript
- JavaScript淺拷貝和深拷貝JavaScript
- 淺談深拷貝與淺拷貝?深拷貝幾種方法。
- JS深拷貝與淺拷貝JS
- JavaScript之深拷貝和淺拷貝JavaScript
- 深入淺出深拷貝與淺拷貝
- 深拷貝、淺拷貝與Cloneable介面
- 賦值、淺拷貝與深拷貝賦值
- Python淺拷貝與深拷貝Python
- python深拷貝與淺拷貝Python
- React之淺拷貝與深拷貝React
- 物件的深拷貝與淺拷貝物件
- 【c++】淺拷貝與深拷貝C++
- JavaScript深淺拷貝JavaScript
- vue深拷貝淺拷貝Vue
- 深入淺出的“深拷貝與淺拷貝”
- 淺拷貝與深拷貝的實現
- javaScript深拷貝和淺拷貝簡單梳理JavaScript
- Javascript知識點:淺拷貝和深拷貝JavaScript
- JavaScript物件的深拷貝以及淺拷貝分析JavaScript物件
- 關於javascript的深拷貝淺拷貝 思考JavaScript
- iOS深拷貝和淺拷貝iOS
- Java深拷貝和淺拷貝Java
- 物件深拷貝和淺拷貝物件
- js 淺拷貝和深拷貝JS
- js 深拷貝和淺拷貝JS
- js深拷貝和淺拷貝JS
- js 深拷貝 vs 淺拷貝JS
- 【JS】深拷貝與淺拷貝,實現深拷貝的幾種方法JS
- 理解JS中的淺拷貝與深拷貝JS
- 圖解 Python 淺拷貝與深拷貝圖解Python
- Java 輕鬆理解深拷貝與淺拷貝Java
- 深拷貝與淺拷貝的實現(一)
- 淺探js深拷貝和淺拷貝JS
- java深克隆(深拷貝)和淺克隆(淺拷貝)Java