1.堆(stack)和棧(heap)
stack為自動分配的記憶體空間,它由系統自動釋放;而heap則是動態分配的記憶體,大小不定也不會自動釋放。
2.值與引用
js中有基本資料型別和引用型別;
基本資料型別的變數和值都是存放在棧中,宣告之後會分配一塊記憶體區域,基本資料型別之間的賦值是直接把棧記憶體中存的值賦值給變數(傳值)
引用型別的變數存在棧中,但值是存在堆中,實際上棧存放的是指向堆中的位址,也叫引用,引用型別直接的賦值實質是把引用賦值給乙個變數(傳址),所以其指向的堆記憶體中的值是一樣的
3.深拷貝和淺拷貝
深拷貝和淺拷貝的使用場景是在複雜物件裡,即物件的屬性還是物件,
淺拷貝是指只複製一層物件,當物件的屬性是引用型別時,實質複製的是其引用,當引用指向的值改變時也會跟著變化
例如:
var obj = ;深拷貝是指複製物件的所有層級,實現方法var shallowobj = shallowcopy(obj);
function shallowcopy(src) ;
for (var prop in src)
} return dst;
}//當乙個物件屬性的引用值改變時將導致另乙個也改變
shallowobj.arr[1] = 5;
obj.arr[1] // = 5
(1)通過遞迴實現
deepcopy(o)(2)通過json解析實現return n;
} else if (o instanceof object)
for (let i in o)
return n;
} else
}
//把乙個物件轉成json字串在轉成json物件json.parse(json.stringify(o))
談談深拷貝和淺拷貝
今天在做專案購物車需求的時候,遇到乙個同深拷貝 淺拷貝相關的問題,所以來談談深拷貝和淺拷貝。什麼是深拷貝?複製基本型別的屬性 引用型別的屬性複製,複製棧中的變數 和 變數指向堆記憶體中的物件的指標和堆記憶體中的物件。什麼是淺拷貝?複製基本型別的屬性 引用型別的屬性複製,複製棧中的變數 和 變數指向堆...
簡單談談C 中深拷貝 淺拷貝
object.memberwiseclone 方法 建立當前 object 的淺表副本。protected object memberwiseclone memberwiseclone 方法建立乙個淺表副本,方法是建立乙個新物件,然後將當前物件的非靜態字段複製到該新物件。如果欄位是值型別的,則對該字...
python中深拷貝與淺拷貝的坑
之前遇到這樣一段 import numpy as np from sklearn import datasets from sklearn.model selection import train test split import collections digits datasets.load ...