面試遇到的坑JS深拷貝和淺拷貝

         

首先要搞明白深拷貝和錢拷貝的區別要先搞明白 棧和堆的區別html

1、棧ide

  棧存儲基礎數據類型,如: String、Number、Boolean、Null、Underined,這些簡單的基礎數據類型可以直接存儲在棧中。棧若是沒有被使用就會被回收指針

2、堆code

  堆存儲引用數據類型的是 Function、Array、Object,在棧內存中存儲着指向堆的地址和C語言的指針有點像,基本類型在當前執行環境結束時銷燬,而引用類型不會隨執行環境結束而銷燬,只有當全部引用它的變量不存在時這個對象才被垃圾回收機制回收。
htm

  

 

 

 

 

 

 3、深拷貝和淺拷貝對象

  

function copy(obj){
            let result = {}            for(var key in obj){
                result[key]=obj[key];
            }            return result
        }        var oldObj = {name: 'Tom', age: 18, colors:['blue','pink']}        var newObj = copy(oldObj)

上面這個代碼 oldObj有兩個基本屬性 name、age  一個引用數據屬性colors,但newObj拷貝後 name,age屬性會被正常的拷貝,而colors屬性,只會進行引用拷貝,這樣會致使oldObj和newObj共用一個colors屬性.這樣就是所謂的淺拷貝。blog

相關文章
相關標籤/搜索