1. 基本類型 和 對象類型
他們最大的區別就是在於他們的傳值方式。 基本類型是傳值 對象類型就是傳引用。
這里復制一份obj叫做obj2, 這里修改了obj2的b為100 同時也修改了obj1.b。 因為他們本來就是一個對象 這就是所謂的淺拷貝。
避免這樣的情況 我們這樣寫
這就是深拷貝 不會改到原來的obj1。
淺拷貝只復制指向某個對象的指針,而不復制對象本身,新舊對象還是共享同一塊內存。但深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共享內存,修改新對象不會改到原對象。
2. Object.assign
Object.assign是ES6 的新函數, 可以實現上面一樣的功能。
但是這個也不能完成深拷貝。因為只能完成第一層的拷貝。如果要完成深拷貝 可以使用jQuery的方法。
3. jquery的深拷貝
jquery有一個提供$.extend 可以使用Deep Copy。