0
プライベートアレイを持つクラスがあります。可変スライスアレイに割り当てることで元の配列を変更することができます
class BookService{
private booksList: Book[];
constructor(){
this.booksList = [
new Book('Tales', true),
new Book('Novels', false),
new Book('Dictionary', false)
];
}
getBooks(){
return this.booksList;
}
}
class Book{
constructor (public name: string, public isRead: boolean){}
}
export const bookService = new BookService();
また、実装があります。
元配列のコピーを取得しました。次に、ローカル配列(元の配列のコピー)を変更しました。修正された原点配列を取得しました。
なぜ私設配列が変更されたのか理解できませんか?
私は
getBooks(){
return this.booksList.slice(0);
}
にはgetBooksを変更する場合、それは助けにはなりません。
Iは、元の配列が変更されない_.cloneDeep Method description
getBooks(){
return _.cloneDeep(this.booksList);
}
lodash法を用いてはgetBooksを変更する場合。 なぜですか?このような状況に関連する間違いを避けるには?
JavaScriptオブジェクトを正しくクローンするにはどうすればいいですか?(https://stackoverflow.com/questions/728360/how-do-i-correctly-clone-a-javascript-object) – kGielo
配列のコピーその中に含まれるオブジェクトのコピーを作成しません。 – deceze
あなたがやっていることは_shallow copy_と呼ばれています。 – undefined