Удаление экземпляра
Как удалить экземпляр из функции-прототипа, если
delete this; не работает?
function init () {
testClassObj = new testClass();
console.log(testClassObj.testVariable1);
testClassObj.clear();
console.log(testClassObj.testVariable1);
}
function testClass () {
this.testVariable1 = 1;
}
testClass.prototype.clear = function () {
delete this;
}
|
Если очень хочется то testClassObj = null;
Самоудалиться ты не сможешь, можешь разве что подчистить все свойства и методы оставив пустой объект. |
Нулл будет работать? Где-то читал что память не освобождается, где-то что освобождается, и еще слышал что это увеличивает шанс того, что сборщик мусора займется удалением.
А если не самоудаляться, а мутить отдельную функцию - это норма? |
Straj,
Объект удаляется когда на него нет ссылок. Если к объекту нельзя получить доступ - сборщик сожрет его. |
Как верно заметил tsigel, главное - не оставлять ссылок. В ручную за исключением редких конкретных случаев удалять смысла нет. Функция закончит работу и объект исчезнет.
(Правда не в приведённом вами куске кода, ибо в нём testClassObj объявлен без var т.е. в глобальной области видимости) |
| Часовой пояс GMT +3, время: 11:59. |