…擴充套件運算子
之前一直以為…可以進行深拷貝,但其實不是
第一種情況,可以深拷貝的
//,[value]當value是string,number,boolean型別都是深拷貝
var aa=[1
,2,3
,4],bb;
bb=[
...aa]
;bb[0]
=5;console.
log(aa)
//[1, 2, 3, 4]
console.
log(bb)
//[5, 2, 3, 4]
當物件或陣列穿插或者多層時拷貝的就是引用位址了,
//,[value] value為array,object拷貝的是引用位址,一旦改變原先的值也會發生改變
var aa=
,bb;
bb=[
...aa]
;bb[0]
.aa=5;
console.
log(aa)
//console.
log(bb)
//var aa=[[
1,2,
3]],bb;
bb=[...aa]
; bb[0]
[1]=
5;console.
log(aa)
//[[1, 5, 3]]
console.
log(bb)
//[[1, 5, 3]]
過載 運算子實現深拷貝
1.前面已經敘述過淺拷貝的問題,當類成員含有指標時,可以通過顯示編寫拷貝建構函式的方法,實現用乙個類初始化另乙個類的深拷貝。2.但是如果是賦值運算,即例子中的 obj2 obj1,則不會呼叫拷貝建構函式,這個時候需要通過過載 運算子的方式實現深拷貝,步驟已經在 注釋中提出。include iostr...
擴充套件運算子
三個點,主要是用來將陣列幻化為用逗號分隔的引數序列。合併陣列 與解構賦值結合 如果將擴充套件運算子用於陣列賦值,只能放在引數的最後一位,否則會報錯。將字串轉為真正的陣列 可以將類似陣列的物件轉為真正的陣列 map和set結構,generator函式 擴充套件運算子內部呼叫的是資料解構的iterato...
擴充套件運算子
首先點明,es6的新特性之擴充套件運算子 spread 就是三個點 和es6的可變引數形式一樣。擴充套件運算子是很強大的乙個運算子,它能簡化很多在es5中會比較繁雜的操作。對於這個運算子,概念性的東西不多,所以這裡我就簡明扼要的給出一些它的常用場景 1 可變引數。雖然可變引數嚴格說不是擴充套件運算子...