本節書摘來自異步社群《javascript啟示錄》一書中的第1章,第1.12節,作者:【美】cody lindley著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
原生對象構造函數object()、array()、function()、date()、error()和regexp()是複雜類型,因為它們可以包含一個或多個原始值或複雜值。本質上,複雜值可以由很多不同類型的javascript對象組成。可以這樣說,複雜對象其在記憶體中的大小是未知的,因為複雜對象可以包含任何值,而不是一個特定的已知值。在如下代碼中,我們建立了一個包含所有原始值的對象和一個包含所有原始值的數組。
這裡的重點是,複雜值是各種值的組合,并且在複雜性群組合方面與原始值不同。
注意
“複雜對象”這一術語在其他作品中也被表達為“複合對象”或“引用類型”。如果還不太清楚,可以思考這些名稱,它們都描述了javascript值的特性,不包括原始值在内。原始值不是“值引用”,不能表示其他值的組合(即一個由幾部分或幾個元素組成的東西)。另一方面,複雜對象是“值引用”,可以包含或封裝其他值。