將 原資料 物件拷貝到 新資料 物件中,但不包括 原資料 里面的子物件
代碼實體
// 原資料
let y = {
'name': 'zhangsan',
'age': '18',
// 原資料中的子物件
'language': [1, [2, 3], [4, 5]],
};
// 創建第二個物件 把原資料賦值給它
let f = y;
// 創建物件 對 元資料 進行拷貝
let c = shallowCopy(y);
// 開始進行拷貝
function shallowCopy(this) {
// 創建物件
let dst = {};
// 將每個資料都給到 dst 變數
for (let i in this) {
dst[i] = this[i];
}
return dst;
}
// 改變賦值中的 name 會改變原始資料
f.name = "lisi";
// 淺拷貝的改變只會讓自己的資料發生變化
c.age = "20";
// 改變原資料賦值的變數 也會改變原資料
f.language[1] = ["二", "三"];
// 淺拷貝只是復制一層物件,不包括里面的物件 所以會使 原資料發生變化
c.language[2] = ["四", "五"];
// 原始資料
console.log(y);
//y = {
// 'name' : 'lisi',
// 'age' : '18',
// 'language' : [1,["二","三"],["四","五"]],
//};
// 賦值操作得到的
console.log(f);
//f = {
// 'name' : 'lisi',
// 'age' : '18',
// 'language' : [1,["二","三"],["四","五"]],
//};
// 淺拷貝得到的
console.log(c);
//c = {
// 'name' : 'zhangsan',
// 'age' : '20',
// 'language' : [1,["二","三"],["四","五"]],
//};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457552.html
標籤:JavaScript
