js 淺拷貝與深拷貝

2021-10-19 10:06:41 字數 1452 閱讀 4524

//將物件oldobj複製給物件newobj

var oldobj =};

var newobj =

;//1.利用for in

for(

var k in oldobj)

console.

log(newobj);//

<

/script>

//修改新物件中物件屬性的屬性值

newobj.bestskills.music =

'大魚'

;console.

log(newobj)

;console.

log(oldobj)

;

原因

淺拷貝 對 屬性值為 特殊資料型別的 物件 來說 複製的是位址,所以指向的是同一塊記憶體空間。

ps:利用es6新增方法object.assign(target, source)也可實現淺拷貝

object.

assign

(newobj, oldobj)

;

//將物件oldobj複製給物件newobj

var oldobj =

, friends:

['danny'

,'liming']}

;var newobj =

;// 封裝函式

function

deepcopy

(newobj, oldobj)

else

if(item instanceof

object);

deepcopy

(newobj[k]

, item)

}else}}

//呼叫函式(傳參)

deepcopy

(newobj, oldobj)

; console.

log(newobj)

;<

/script>

newobj.bestskills.music =

'大魚'

;console.

log(newobj)

;console.

log(oldobj)

;

原因:深拷貝拷貝多層。

js深拷貝與淺拷貝

1 基礎知識 基本型別與引用型別 js中可以把變數分成兩部分,基本型別和引用型別。基本型別包括 undefined null boolean number和string 引用型別值可能由多個值構成的物件。在對基礎型別資料進行拷貝時,實際相當於建立新的相同資料 hello 賦值給b var a hel...

js 淺拷貝與深拷貝

js 有兩種資料型別,基礎資料型別和引用資料型別 基礎資料型別都是按值訪問的,我們可以直接操作儲存在變數中的實際的值。而引用型別如array,1.淺拷貝 只複製指向某個物件的指標,而不複製物件本身,新舊物件共享一塊記憶體 淺拷貝是指只複製一層物件,當物件的屬性是引用型別時,實質複製的是其引用,當引用...

js深拷貝與淺拷貝

實現乙個頁面或者乙個功能時,常常遇到的場景需要我們備份乙個陣列或者物件,這時候出現了深拷貝與淺拷貝效果截然不同呀總結如下 var arr 1,2,3,4 shallowarr arr arr 0 change console.log arr console.log shallowarr change...