| 
 Как удалить объект из массива изнутри самого объекта; и как передать 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, мысли вслух ... 
class Data{
 constructor(){
  this.objects=[];
 }
 fillObjects(some_data){this.objects.push(...some_data.map(a => (a.self = this, a)))}
 deleteObject(id){
  this.objects.splice(id,1);
 }
}
class Obj{
constructor(n){
  this.n = n;
 }
 destructor(){
  const id = this.self.objects.findIndex(a => a === this);
  this.self.deleteObject(id)
    }
}
const getObjectsFromOutside = arr => arr.map(n => new Obj(n))
window.data=new Data();
data.fillObjects(getObjectsFromOutside([6,9,0,5])); // тут пополняется массив data.objects экземплярами Obj
console.log(data.objects);
let elem = data.objects[2];
elem.destructor();
console.log(data.objects);
 | 
| Часовой пояс GMT +3, время: 23:45. |