(я предполагаю syntax и other errors, что JAAulde указывал на самом деле не в вашем коде, или что вы исправили его.)
but with delete
Object is not destroyed Completely...
delete
не освобождает объекты; он удаляет свойства. Объект будет иметь право на сбор мусора, если свойство, которое вы удаляете, является единственной ссылкой на объект. Когда и как происходит фактическая сборка мусора, зависит от механизма JavaScript (это вряд ли произойдет сразу). Если у вас есть другие ссылки на этот объект, то удаление этого свойства не сделает его подходящим для GC (из-за других ссылок на него).
Но если вы собираетесь присвоить новое значение этому свойству, нет причин для delete
; присвоение нового значения также освобождает ссылку на предыдущий объект, что делает его приемлемым для GC (при условии, что ничто другое не ссылается на него).
Например, этот код будет полностью освободить старый объект (если что-то еще не имеет ссылку на него):
$scope.mediacontent = {};
$scope.mediacontent[$scope.slider_url] = media_data;
$scope.mediacontent[$scope.slider_url][img_no].active = true;
... потому что первая строка этого заменяет ссылку на старый объект со ссылкой на недавно созданный.
Я бы сказал, что вы также представили модель в виде мнений, поэтому ее уничтожение в определенном объеме невозможно. Вы можете переписать его другим объектом. Или вы можете удалить DOM-узлы и переписать объект. – Blauharley
Код, который вы указали, вызывает ошибки, которые вы должны видеть в консоли. Первая строка, 'delete $ scope.mediacontent = {};' производит: "SyntaxError: Левая сторона оператора '=' должна быть ссылкой." Вы не можете удалить и назначить в том же заявлении. – JAAulde
@JAAulde oh моя ошибка, я пытался удалить $ scope.mediacontent, я вставляю его здесь неправильно. – anam