我不明白為什么推送到陣列會影響結果,而更改陣列項不會。
怎么寫才能讓restore方法回傳初始陣列?
class Snapshot {
constructor(array) {
this.array = [...array];
}
restore() {
return this.array;
}
}
var array = [1, 2];
var snap = new Snapshot(array);
array[0] = 3;
array = snap.restore();
console.log(array.join()); // Logs "1,2"
array.push(4);
array = snap.restore();
console.log(array.join()); //It should log "1,2", but logs "1,2,4"
uj5u.com熱心網友回復:
這條線...
array = snap.restore();
分配snap.arrayto的物件參考,array因此它們參考相同的物件值。操縱array在這個階段還操縱snap.array。
如果你想打破參考并防止對類成員的外部操作,你想要這個
restore() {
return [...this.array]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405420.html
標籤:
