Я задаюсь вопросом, возможно ли для объекта в JavaScript удалить себя, после того как это закончило свою задачу.
Например, у меня есть следующий объект...
var myObject = Object.create(baseObject);
myObject.init = function() {
/* do some stuff... */
delete this;
};
myObject.init();
Это работает? В противном случае есть ли иначе?
Это не сработает, во-первых, потому что значение this
, связанное с контекстом выполнения, неизменяемо.
Теперь вы можете подумать, что удаление myObject
(путем delete myObject;
) может сработать, но и это не поможет.
Переменные - это свойства объекта Variable Object, этот объект недоступен в коде, он находится только перед цепочкой scope, где вы делаете объявления переменных.
Оператор Variable создает эти свойства с атрибутом { DontDelete }
, и это приводит к неудаче оператора delete
.
Если вы хотите добиться этого, можно обнулить ваш экземпляр myObject
, но это не гарантирует, что другая ссылка все еще указывает на этот объект.
Recommended lectures:
Нет. this
- это просто локальная ссылка на объект, поэтому ее удаление не приводит к тому, что объект не существует. У объекта нет возможности самоуничтожиться таким образом. Если у вас есть большие объекты, которые, по вашему мнению, впоследствии следует стереть, вам следует использовать паттерны «Фасад» или «Стратегия».