js的深淺拷貝

2021-10-03 10:10:02 字數 1106 閱讀 9453

1、淺拷貝

淺拷貝只是拷貝基本型別的資料,如果父物件的屬性等於陣列或另乙個物件,那麼實際上,子物件獲得的只是乙個記憶體位址,因此存在父物件被篡改的可能,淺拷貝只複製指向某個物件的指標,而不複製物件本身,新舊物件還是共享同一塊記憶體。

2、深拷貝

深拷貝就是能夠實現真正意義上的陣列和物件的拷貝。(深拷貝會另外創造乙個一模一樣的物件,新物件跟原物件不共享記憶體,修改新物件不會改到原物件)

3、a) 在傳入父類傳入的引數有引用元素時,則需要考慮深拷貝和淺拷貝的問題。

b) 淺拷貝:傳參時值只傳遞了引用空間的位址

c) 深拷貝:開闢空間,且賦值

class student

//拷貝構造方法

clone()

eat()

} //淺拷貝:只是將物件的引用id進行複製,但是並沒有開闢空間

// let s1 = new student("007","老王");

// let s2 = s1;

// s2.name = "大黃";

// console.log(s1.name);

//深拷貝

let s1 = new student("007","老王");

let s2 = s1.clone();

s2.name = "大黃";

console.log(s1.name,s2.name);

繼承中的深拷貝和淺拷貝

function birthday(newy,newm,newd)

function animal(newbir)

function person()

person.prototype = new animal(new birthday(1,2,3));

//拷貝構造

person.prototype.clone = function()

let p1 = new person();

let p2 = p1.clone();

p2.bir.y = 666;

console.log(p1.bir.y);

console.log(p2.bir.y);

JS深 淺拷貝

在js中,資料型別分為基本資料型別和引用資料型別兩種。對於基本資料型別來說,它的值直接儲存在棧記憶體中,而對於引用型別來說,它在棧記憶體中只是儲存了乙個指向對記憶體的引用,而真正的資料儲存在堆記憶體中。object array 這兩個就是引用型別,當我門直接去拷貝的話 copyobj obj 拷貝的...

js 深淺拷貝

深拷貝就是複製內部內容 淺拷貝就是複製記憶體位址 var obj 淺拷貝 引用傳遞 淺拷貝就是賦值,將鑰匙複製乙份 var o obj 深拷貝 內部內容複製乙份 將房子複製乙份 方法一 var str json stringify obj var obj3 json parse str 方法二 va...

js深淺拷貝

1.什麼是深淺拷貝 簡單的來說,加入b複製a a改變 如果b也跟著改變的話,那就是淺拷貝,反之是深拷貝 實現淺拷貝方法 1.賦值操作 var a 0 1,2 3,4 var b a a 0 5console log a 5,1,2,3,4 console log b 5,1,2,3,4 2.es6 ...