複製物件重新賦值不改變原物件

2021-08-20 01:46:48 字數 1970 閱讀 1826

// 直接賦值

varobj1 = ;

varobj2 = obj1;

console.log(obj2);//

// 通過 object.assign() 這個屬性來進行複製

varobj = ;

varobj2 = object.assign({}, obj);

console.log(obj2);//

// 通過 for in 迴圈賦值

varobj1=, c: 0 }

varobj2={}

for(varkeyinobj1 )

console.log(obj2);// , c: 0 }

// 使用 object.assign() 方法複製物件

letobj1 = };

letobj2 = object.assign({}, obj1);

console.log(json.stringify(obj2));// }

obj1.a = 1;

console.log(json.stringify(obj1));// }

console.log(json.stringify(obj2));// }

obj2.a = 2;

console.log(json.stringify(obj1));// }

console.log(json.stringify(obj2));// }

obj2.b.c = 3;

console.log(json.stringify(obj1));// }

console.log(json.stringify(obj2));// }

//得知字串型別可修改,物件失敗,

以上的方法可以封裝成方法方便使用

function

cloneobjectfn

(obj

) var obj1=}

var obj2=

clonebojectfn(obj2)//複製物件

obj2.b.c=3;//修改物件

console.log(obj1)//

}console.log(obj2)//}

刪除物件屬性, 改變原物件或不改變原物件

一 用處 刪除物件的屬性 eg var person delete person.name console.log person 結果 二 注意事項 1 不可以刪除用var const定義的變數 注 是指物件裡的屬性,不是指該物件不能用var 或 const。eg var a 123 或 const...

js引用複製如何改變複製陣列不改變原陣列

我們需要知道的是object和array型別的變數為引用型別,也就是說其儲存的實際上並不是具體的值而是乙個指向堆記憶體的位址。因此當我們把乙個引用型別如 陣列 賦值給另乙個變數時,實際上是把另乙個變數指向了與之相同的位址,當我們改變其中乙個時,實際上改變了堆記憶體中的儲存內容 相應的所有指向該位址的...

物件複製和物件賦值

1 先看這個例子 include include using namespace std class student 建構函式 student string strname,int nage name strname age nage 帶引數的建構函式 student void show int m...