物件深淺拷貝的四種方法

2021-10-24 21:21:53 字數 1523 閱讀 1953

存在這麼乙個物件,對他進行深拷貝

var obj =

};

淺拷貝 :僅僅是指標給了另乙個物件
var obj =};

var obj1 = obj;

obj1.name =

'熱心市民王先生'

;//此時,我們對obj1進行改變,檢視obj、obj1

console.

log(obj)

// }

console.

log(obj1)

// }

我們可以發現,原來的obj的name也被改變了,這就是淺拷貝

深拷貝1、通過json實現,會造成方法丟失

var obj =};

var obj1 =

json

.stringify

(obj)

; obj1 =

json

.parse

(obj1)

; obj1.name =

'熱心市民王先生'

console.

log(obj1)

;//

console.

log(obj)

// }

我們可以發現,json方法,沒有改變obj原物件,但是,方法沒有被繼承

2、通過for-in遍歷迴圈,實現

var obj =};

var obj2 =

;for

(var attr in obj)

obj2.name =

'熱心市民王先生'

console.

log(obj2)

;// }

console.

log(obj)

// }

通過for-in遍歷迴圈,新的obj2改變,obj原物件沒有被改變,方法被繼承

3、通過object.assign()

var obj =};

var obj3 =

; object.

assign

(obj1, obj)

; obj3.name =

'熱心市民王先生'

console.

log(obj3)

;// }

console.

log(obj)

// }

通過object.assign(),新的obj3改變,obj原物件沒有被改變,方法被繼承

4、通過…語法繼承

var obj =};

var obj4 =

; obj4=

obj4.name =

'熱心市民王先生'

console.

log(obj4)

;// }

console.

log(obj)

// }

通過…語法,新的obj4改變,obj原物件沒有被改變,方法被繼承

PHP遞迴四種方法

data json data str replace data arr json decode data true print r arr dir foreach arr as k v header content type text html charset utf 8 print r arr p...

執行緒同步四種方法

執行緒同步的方法 1 wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。2 sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕捉 interruptedexception異常。3 notify 喚醒乙個處於等待狀態的執行緒,注意的是在呼叫此方法的時候,並...

隨機排序四種方法

var arr 1,3,4,6,8,9,7 function foo arr return clonearr 返回排序後的值 for var i 0 i 10 i 原理 因為sort排序方法是通過 函式的返回值來進行排序的,1是公升序,1是降序,而隨機數的取值範圍是0 1,所以我們將隨機數 0.5,...