Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удаление экземпляра (https://javascript.ru/forum/misc/50018-udalenie-ehkzemplyara.html)

Straj 08.09.2014 00:50

Удаление экземпляра
 
Как удалить экземпляр из функции-прототипа, если
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;
}

Aetae 08.09.2014 10:46

Если очень хочется то testClassObj = null;
Самоудалиться ты не сможешь, можешь разве что подчистить все свойства и методы оставив пустой объект.

Straj 08.09.2014 11:10

Нулл будет работать? Где-то читал что память не освобождается, где-то что освобождается, и еще слышал что это увеличивает шанс того, что сборщик мусора займется удалением.
А если не самоудаляться, а мутить отдельную функцию - это норма?

tsigel 08.09.2014 11:18

Straj,
Объект удаляется когда на него нет ссылок. Если к объекту нельзя получить доступ - сборщик сожрет его.

Aetae 08.09.2014 11:30

Как верно заметил tsigel, главное - не оставлять ссылок. В ручную за исключением редких конкретных случаев удалять смысла нет. Функция закончит работу и объект исчезнет.
(Правда не в приведённом вами куске кода, ибо в нём testClassObj объявлен без var т.е. в глобальной области видимости)


Часовой пояс GMT +3, время: 21:59.