js中的淺拷貝深拷貝深入理解

2021-09-14 08:39:11 字數 939 閱讀 2574

舉個例子來說明一下什麼是淺拷貝什麼是深拷貝

var x = },

c: [1, 2, 3]

};var y = shallow(x);

得出的結果可以看出是淺拷貝

出現這種情況的本質是:物件是按引用賦值的

指的是拷貝乙個物件,改變乙個值不影響另乙個的值

// 實現深複製功能

// 判斷:1.是否是物件 2.是否是函式

function deepcopy (obj, isdeep) else else ,

value;

for (name in obj) else

}return target;}}

}var array3 = },

c: function ()

};var array4 = deepcopy(array3, false);

使用json物件的parse()和stringify()方法

//例1

var source = }

var target = json.parse(json.stringify(source));

target.name = "target"; //改變target的name屬性

console.log(source.name); //source

console.log(target.name); //target

//例2

var source = , child: }

var target = json.parse(json.stringify(source));

console.log(target.name); //undefined

這種方法有侷限性:

深入理解深拷貝與淺拷貝

深拷貝和淺拷貝是經常在面試中會出現的,主要考察你對基本型別和引用型別的理解深度。我在無數次的面試中,應聘者還沒有乙個人能把這個問題回答情況,包括很多機構的培訓老師。這篇文章會讓你把基本型別和引用型別的區別搞得清清楚楚,搞清楚這兩者的區別,你對任何程式語言的都不怕,因為,這不是js一門語言,是任何程式...

IOS 深入理解 深拷貝 與 淺拷貝

oc 陣列中的深拷貝與淺拷貝 dog dog1 dog new 這裡就是淺拷貝,即指標拷貝 dog dog2 dog1 dog.h inte ce dog nsobject property nonatomic nsinteger age enddog.m implementation dog id...

深入淺出理解 深拷貝 淺拷貝

百科定義 拷貝就是拷貝指向物件的指標,意思就是說 拷貝出來的目標物件的指標和源物件的指標指向的記憶體空間是同一塊空間,淺拷貝只是一種簡單的拷貝,讓幾個物件公用乙個記憶體,然而當記憶體銷毀的時候,指向這個記憶體空間的所有指標需要重新定義,不然會造成指標錯誤。基本型別 undefined,null,bo...