@Wynell_ru

Увеличит ли это расход памяти, если я передам один и тот же экземпляр класса в несколько мест?

Например,
class SomeClass {
    constructor(parent, child) {
        this.parent = parent;
        this.child = child;
    }
}
let sc1 = new SomeClass();
let sc2 = sc1.child =  new SomeClass(sc1);

В таком случае в памяти будет лежать два экземпляра sc1 (отдельно,и как sc2.parent) и два экземпляра sc2 (отдельно и как sc1.child)?
Или как-то по другому?
Если я выполняю
delete sc2;
то sc1.child все равно экземпляр класса SomeClass, т.е. он не удалился...
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
Hecc
@Hecc
Frontend. Дизайн. Шрифт.
Разберитесь вначале, как работает delete.
Он не удаляет объекты, а только их свойства.

Вот это выражение delete sc2; вам возвращает false, что говорит о том, что операция не была выполненна.

Касательно вопроса по памяти, то в JS объекты передаются по ссылке. Если у вас было создано всего два объекта, то памяти выделится ровно так же - на два объекта.
Да и в целом, не стоит сильно заморачиватся с ручным управлением памятью, garbage collector в браузере умеют самостоятельно удалять из памяти то, что браузером не используется.
Само собой, код нужно оптимизировать так, чтобы утечек памяти не было, но это уже немного другая история :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы