Может ли объект автоматически удалять себя в javascript, как только он достиг своей цели?
Мне интересно, удастся ли удалить объект из javascript после его выполнения.
Например, у меня есть следующий объект...
var myObject = Object.create(baseObject);
myObject.init = function() {
/* do some stuff... */
delete this;
};
myObject.init();
Это работает? Если нет, есть ли другой способ?
Ответы
Ответ 1
Это не сработает, потому что значение this
, связанное с контекстом выполнения, является неизменным.
Теперь вы можете подумать, что удаление myObject
(через delete myObject;
) может работать, но это не сделало бы этого.
Переменные - это действительно свойства объекта Variable Object, этот объект недоступен по коду, он просто находится в цепочке областей видимости, где вы делаете объявления переменных.
Оператор Variable создает эти свойства с атрибутом { DontDelete }
и вызывает сбой оператора delete
.
Параметр, если вы хотите достичь этого, - это аннулировать экземпляр myObject
, но это не гарантирует, что еще одна ссылка все еще указывает на этот объект.
Рекомендуемые лекции:
Ответ 2
Нет. this
- это просто локальная ссылка на объект, поэтому удаление его не делает объект не существующим. Таким образом, для объекта невозможно самостоятельно разрушить объект. Если у вас есть большие объекты, которые, по вашему мнению, впоследствии должны быть удалены, вы должны посмотреть на использование шаблонов Facade или Strategy.
Ответ 3
Вы можете попробовать
window.namespace.myObject = Object.create(baseObject);
namespace.myObject.init = function() {
/* do some stuff... */
delete window.namespace.myObject;
}
namespace.myObject.init();