淺拷貝和深拷貝的區別(詳解)
阿新 • • 發佈:2021-01-15
技術標籤:javajsjavascript
今天小編給你們講講淺拷貝跟深拷貝吧!
歡迎可愛的你們來看看,互相學習喔!
淺拷貝和深拷貝最根本的區別就是是否真正獲取一個物件的複製實體,而不是引用;
簡單來說淺拷貝就是一個改變,另一個也會變,只拷貝一層物件的屬性。
深拷貝就是兩個物件對應兩個不同的地址,修改一個物件的屬性,另一個不會改變。(文字多了就會不想看了,我們來展示程式碼吧)
淺拷貝還用程式碼來展示嗎算了來一段吧哈哈
var obj1={"name":"隔壁老王"}; var obj2 = obj1; obj1.name ="隔壁老李"; console.log("obj1",obj1); console.log("obj2",obj2);
一個改變另一個也會變
遞迴-深拷貝
var obj={
"name":"隔壁老王",
"age":13,
"list":{"title":"新聞"}
}
function deepCopy(obj){
var copyobj={} //建立新物件
for( var key in obj ){
if( obj.hasOwnProperty (key)==true ){ //判斷物件自身是否存在屬性
if( obj[key] instanceof Object ){ //判斷屬性值是不是物件
copyobj[key]=deepCopy(obj[key]) //是的話賦值
}else{
copyobj[key]=obj[key] //是的話賦值
}
}
}
return copyobj //返回物件
}
var obj2=deepCopy(obj) //遞迴賦值新物件
obj.list.title="娛樂" //修改物件屬性
console.log('obj :>> ', obj); //一個改變,另一個不會變
console.log('obj2 :>> ', obj2);
展示效果
幫助到你們給小姐姐點贊評論喔~