瞭解一下js物件深拷貝與淺拷貝(前端開發面試)
講清楚js物件深拷貝與淺拷貝
在一般面試中,我們會遇到深拷貝與淺拷貝中,雖然在程式設計中很少用到,但是如果你回答出來了,你可牛逼了!!!
深拷貝
啥叫深拷貝?
說通俗一點.就是兩個物件之間沒有任何關係,看下面的例子,你就明白了.
我們瞭解這幾種就可以了
通過JSON實現的深拷貝
例如:
var obj = {
name: '石榴姐', age: 24,
};
var obj1=JSON.stringify(obj);
console.log(obj1);
obj1.name='小辣椒';
console.log(obj);
console.log(obj1);
**注意:**如果該對上方法,在用JSON深拷貝時,會造成方法丟失.
var obj = {
name: '石榴姐', age: 24, say() {
console.log('看我丟了嗎???');
}
};
var obj1 = JSON.stringify(obj);
obj1 = JSON.parse(obj1)
console.log('obj1:', obj1);
obj1.name = '小辣椒';
console.log('obj', obj);
console.log('obj1', obj1);
通過for-in遍歷迴圈實現
var obj = {
name: '石榴姐', age: 24, say() {
console.log('看我丟了嗎???');
}
};
var obj1={};
for(var attr in obj){
obj1[attr]=obj[attr]
}
console.log('obj1:', obj1);
obj1.say();
obj1.name='小芳';
console.log('obj:', obj);
通過object.assign實現
var obj = {
name: '石榴姐', age: 24, say() {
console.log('看我丟了嗎???');
}
};
var obj1 = {};
// 將obj合併到obj1上
Object.assign(obj1, obj);
console.log('obj1',obj1);
obj1.age = 66;
console.log('obj',obj);
通過ES6擴充套件運算子…
var obj = { name: '五姑娘', age: 22 };
var obj1 = { ...obj };
console.log('obj1',obj1);
obj1.age = 66;
console.log('obj',obj);
淺拷貝
啥叫淺拷貝?
淺拷貝就是複製的那個物件含有與原來物件相同的值,他們儲存在堆記憶體中,使用同一個地址,改變一個屬性的值,另一個物件屬性的值也會變
var obj = {
param1: '深淺拷貝', param2: 123, say() {
console.log(this.param1);
}
};
當使用淺拷貝時,可以直接賦值
var obj1 = obj;
obj1.param1 = '淺拷貝';
console.log(obj);
//會發現obj中的param1同樣也更改了
持續更新中!!!
相關文章
- JS深拷貝與淺拷貝JS
- 物件的深拷貝與淺拷貝物件
- 【JavaScript】物件的淺拷貝與深拷貝JavaScript物件
- 物件深拷貝和淺拷貝物件
- jquery之物件拷貝深拷貝淺拷貝案例講解jQuery物件
- iOS開發-深拷貝&淺拷貝iOS
- js 淺拷貝和深拷貝JS
- js 深拷貝和淺拷貝JS
- js深拷貝和淺拷貝JS
- js 深拷貝 vs 淺拷貝JS
- 實現物件淺拷貝、深拷貝物件
- 聊聊物件深拷貝和淺拷貝物件
- 淺談深拷貝與淺拷貝?深拷貝幾種方法。
- 【JS】深拷貝與淺拷貝,實現深拷貝的幾種方法JS
- 淺探js深拷貝和淺拷貝JS
- 理解JS中的淺拷貝與深拷貝JS
- PHP 物件導向 - 物件的淺拷貝與深拷貝PHP物件
- js的深拷貝和淺拷貝JS
- js之淺拷貝和深拷貝JS
- 深入淺出深拷貝與淺拷貝
- 圖解 Python 淺拷貝與深拷貝圖解Python
- 深拷貝、淺拷貝與Cloneable介面
- 賦值、淺拷貝與深拷貝賦值
- Python淺拷貝與深拷貝Python
- python深拷貝與淺拷貝Python
- React之淺拷貝與深拷貝React
- 【c++】淺拷貝與深拷貝C++
- vue深拷貝淺拷貝Vue
- js實現深拷貝和淺拷貝JS
- 深入淺出的“深拷貝與淺拷貝”
- JavaScript物件的深拷貝以及淺拷貝分析JavaScript物件
- JavaScript中的淺拷貝與深拷貝JavaScript
- 淺拷貝與深拷貝的實現
- 淺拷貝與深拷貝程式碼(javascript)JavaScript
- js物件實現深淺拷貝!!JS物件
- 前端JS:什麼是深拷貝?什麼是淺拷貝?前端JS
- 在js中如何區分深拷貝與淺拷貝?JS
- iOS深拷貝和淺拷貝iOS