У меня есть объект со структурой типа data.edit.lstAnnotation.lstComments
с
...
lstAnnotation?: AnnotationInterface;
...
export interface AnnotationInterface {
lstComments: CommentList;
}
export class CommentList {
[key: string]: CommentEntity;
}
...
Насколько я понимаю, функция Object.assign()
делает мелкую копию. Это означает, что контент не копируется и ссылки сохраняются. У меня есть функция, такая как
Object.keys(this.data.edit.lstAnnotation.lstComments).map((key: string) => {
const newEntity = {...this.data.edit.lstAnnotation.lstComments[key]};
delete newEntity.cur; // <<<<----------------- [1]
if (newEntity.add && newEntity.add.trim().length === 0) {
delete newEntity.add; // <<<<-------------- [2]
}
return JSON.stringify(newEntity);
}).join();
, которая делает хорошую строку. Насколько я понимаю, я создаю мелкую копию содержимого, а затем удаляю (delete
) свойства. Мой вопрос: почему delete
не применяется к исходному списку (data.edit.lstAnnotation.lstComments
)?
У меня все еще есть в data.edit.lstAnnotation.lstComments
записи с key
cur
, например, data.edit.lstAnnotation.lstComments['abc'].cur
==> object....
Я вполне доволен текущей ситуацией. Но если я удаляю из скопированного объекта, а оригинал не обновляется, я бы сказал, что это глубокая копия. Итак, где моя ошибка?