Показать сообщение отдельно
  #1 (permalink)  
Старый 27.05.2020, 17:35
A_J A_J вне форума
Новичок на форуме
Отправить личное сообщение для A_J Посмотреть профиль Найти все сообщения от A_J
 
Регистрация: 08.07.2017
Сообщений: 1

Как удалить объект из массива изнутри самого объекта; и как передать this в forEach
Данные организованы так.
class Data{
 constructor(){
  var objects=[];
 }
 fillObjects(some_data){...}
 deleteObject(id){
  this.objects.splice(id,1);
 }
}

class Obj{
 ...
}

window.data=new Data();
data.fillObjects(getObjectsFromOutside()); // тут пополняется массив data.objects экземплярами Object

Экземпляры Obj из data.objects нужно удалять. Уже реализованный способ - метод Data.deleteObject(id) . Как удалить экземпляр изнутри, т.е. что написать в методе Obj.destructor(), не обращаясь к внешнему объекту?
Второй вопрос. В некотором методе класса Data имеются строки
this.objects.forEach(function(item,index){
 if(someCondition)
  window.data.deleteObject(index);
});

Проблема не только в том, что нельзя вызвать удаление элемента изнутри, но и указан в методе конкретный экземпляр Data, что совершенно криво. Сюда так просто не передаётся this, т.е. this.data.deleteObject(index) выдаст ошибку. Как передать ссылку на текущий объект внутрь forEach ?

Последний раз редактировалось A_J, 27.05.2020 в 17:45.
Ответить с цитированием