深淺拷貝,資料型別的判定方法,原型與原型鏈

2021-10-14 16:19:25 字數 582 閱讀 8206

// 簡單的深拷貝 

json

.parse

(json

.stringify

(data)

)// 遞迴的深拷貝

function

deepcopy

(data)

for(

let key in data)

return newdata

}

淺拷貝就是拷貝資料的第一層資料 但是如果資料內部還有複雜資料就只是引用 無法達到拷貝的效果

深拷貝 就是利用遞迴對資料的內部進行層層對應的拷貝 來完成 乙個與原資料完全剝離的新資料 this 指向自己的堆

示意圖:

所有物件都有__proto__屬性。

只有函式物件才有prototype屬性。

protoype物件預設有兩個屬性:constructor 和 proto。

例項物件的__proto__指向的是函式的protoype

函式物件的prototype屬性是外部共享的,而__proto__是隱式的。

函式和object的__proto__的頂端是null

深拷貝 淺拷貝 資料型別

1 不可變型別 包括數值 字串 元組 不可變指的是不能改變引用,只能放置乙個新的引用 2 可變型別 包括列表和字典 可變指的是當向列表或字典裡面增刪改時,引用沒有受到影響 進一步解釋可變與不可變,是指記憶體中的那塊內容 value 是否可以被改變。如果是不可變型別,在對物件本身操作的時候,必須在記憶...

JS資料型別 深淺拷貝

1.基本資料型別有number,string,boolean,null,undefined,symbol es6新增的 也稱原始資料型別。2.js有原始值型別和引用值型別,var str hello str 0 z 無法修改 3.js記憶體分為堆記憶體和棧記憶體,棧記憶體儲存的都是有固定大小 空間的...

論基本資料型別與引用資料型別以及深淺拷貝的區別

一 資料型別 js有兩種資料型別 2.棧 stack 與 堆 heap 的概念 3.這兩類資料型別的儲存方式 變a的同時b沒有發生改變,因此接下來分析一下產生這種變化的原因 當 b a 時,棧會新開闢乙個記憶體,如下 所以當你此時修改a 2,對b並不會造成影響,因為此時的b已自食其力,翅膀硬了,不受...