Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2014, 00:50
Интересующийся
Отправить личное сообщение для Straj Посмотреть профиль Найти все сообщения от Straj
 
Регистрация: 05.08.2014
Сообщений: 16

Удаление экземпляра
Как удалить экземпляр из функции-прототипа, если
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;
}
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2014, 10:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Если очень хочется то testClassObj = null;
Самоудалиться ты не сможешь, можешь разве что подчистить все свойства и методы оставив пустой объект.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2014, 11:10
Интересующийся
Отправить личное сообщение для Straj Посмотреть профиль Найти все сообщения от Straj
 
Регистрация: 05.08.2014
Сообщений: 16

Нулл будет работать? Где-то читал что память не освобождается, где-то что освобождается, и еще слышал что это увеличивает шанс того, что сборщик мусора займется удалением.
А если не самоудаляться, а мутить отдельную функцию - это норма?
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2014, 11:18
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Straj,
Объект удаляется когда на него нет ссылок. Если к объекту нельзя получить доступ - сборщик сожрет его.
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2014, 11:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

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

Последний раз редактировалось Aetae, 08.09.2014 в 11:37.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Удаление iframe, DOM Махач Events/DOM/Window 5 24.04.2012 17:56
Удаление элемента из HTML-списка Kostyk92 Элементы интерфейса 1 06.02.2012 23:00
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00