Подтвердить что ты не робот

Может ли объект автоматически удалять себя в javascript, как только он достиг своей цели?

Мне интересно, удастся ли удалить объект из javascript после его выполнения.

Например, у меня есть следующий объект...

var myObject = Object.create(baseObject);
myObject.init = function() {
  /* do some stuff... */
   delete this;
};
myObject.init();

Это работает? Если нет, есть ли другой способ?

4b9b3361

Ответ 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();