將 原數據 對象拷貝到 新數據 對象中,但不包括 原數據 裡面的子對象 代碼實例 // 原數據 let y = { 'name': 'zhangsan', 'age': '18', // 原數據中的子對象 'language': [1, [2, 3], [4, 5]], }; // 創建第二個對象 ...
將 原數據 對象拷貝到 新數據 對象中,但不包括 原數據 裡面的子對象
代碼實例
// 原數據
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,["二","三"],["四","五"]],
//};