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

Я задаюсь вопросом, возможно ли для объекта в JavaScript удалить себя, после того как это закончило свою задачу.

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

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

Это работает? В противном случае есть ли иначе?

47
задан Brian Tompsett - 汤莱恩 6 July 2015 в 11:45
поделиться

2 ответа

Это не сработает, во-первых, потому что значение this , связанное с контекстом выполнения, неизменяемо.

Теперь вы можете подумать, что удаление myObject (путем delete myObject;) может сработать, но и это не поможет.

Переменные - это свойства объекта Variable Object, этот объект недоступен в коде, он находится только перед цепочкой scope, где вы делаете объявления переменных.

Оператор Variable создает эти свойства с атрибутом { DontDelete }, и это приводит к неудаче оператора delete.

Если вы хотите добиться этого, можно обнулить ваш экземпляр myObject, но это не гарантирует, что другая ссылка все еще указывает на этот объект.

Recommended lectures:

53
ответ дан 26 November 2019 в 19:47
поделиться

Нет. this - это просто локальная ссылка на объект, поэтому ее удаление не приводит к тому, что объект не существует. У объекта нет возможности самоуничтожиться таким образом. Если у вас есть большие объекты, которые, по вашему мнению, впоследствии следует стереть, вам следует использовать паттерны «Фасад» или «Стратегия».

13
ответ дан 26 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: