Лучше подходить обнулять переменные, объекты в Javascript
2247 просмотра
1 ответ
Я создаю что-то для мобильных устройств и хотел бы как-то очистить нулевые объекты, переменные, чтобы освободить немного памяти. Здесь у меня есть два быстрых примера, оба, как я полагаю, являются анонимными функциями, но какой путь лучше или более правильный подход? Извините, если я все понял неправильно. Мне обоим кажется, что они делают одно и то же, хотя мне больше нравится первый, поскольку объекты не будут создаваться до тех пор, пока они мне не понадобятся. Вторая версия будет немедленно выполнять код для создания переменных, объектов и т. Д., Но не будет выполнять основную функцию сборки, пока она мне не понадобится.
Я просто пытаюсь выяснить, какой путь более распространен. Я знаю, что такие новички, как я, чаще всего неправильно понимают использование анонимных функций.
V1
var app = function() {
//create variables, objects
var a = 'Data 1';
var b = 'Data 2';
//do some things
console.log(a + ', ' + b);
//do a cleanup
app.cleanup = function() {
a = null;
b = null;
console.log(a, b);
}
}
setTimeout(app, 200);
V2
var app = {};
(function(){
//create variables, objects
var a = 'Data 1';
var b = 'Data 2';
app.build = function(){
//do some things
console.log(a + ', ' + b);
}
//do a cleanup
app.cleanup = function(){
a = null;
b = null;
console.log(a, b);
}
setTimeout(app.build,200);
})();
Позже в HTML или событие
<input type="button" onclick="app.cleanup()" value="clean" />
Автор: devjs11
Источник
Размещён: 06.07.2019 01:05
Ответы (1)
2 плюса
Вы не должны беспокоиться об освобождении ресурсов. В JavaScript есть сборщик мусора, который будет подбирать переменные, которые выпадают из области видимости, и уничтожать их. Удалите ссылку на объект, когда он вам не нужен delete obj.yourReference
, reference = null
или что-то подобное, и пусть сборщик мусора сделает все остальное.
Вы обнаружите, что # 1 автоматически восстановит a
и b
переменные и сама автоматически, если вы удалите свое app.cleanup()
определение. Если вы не сделаете этого, a
и b
оба они будут заключены в замыкание, созданное cleanup
функцией, которую вы оставляете позади, то вы мешаете сборщику мусора делать это.
Для того, чтобы избавиться от всего app
в # 1, вы должны будете делать delete window.app
или app = null
в окне содержит ссылку на него.
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript-objects Как динамически объединить свойства двух объектов JavaScript?
- javascript-objects Как удалить свойство из объекта JavaScript?
- javascript-objects Как проверить, содержит ли массив объект в JavaScript?
- javascript-objects Как правильно клонировать объект JavaScript?
- dom-events Есть ли событие onSelect или эквивалент для HTML <select>?
- dom-events Запуск события клавиатуры в Safari с использованием JavaScript
- dom-events Добавление события onclick в строку таблицы
- dom-events event.preventDefault () против возврата false
- dom-events Как получить слово под курсором с помощью JavaScript?
- function-literal Лучше подходить обнулять переменные, объекты в Javascript
- function-literal Как я могу передать литерал функции extern (C)?
- function-literal Почему эта функция рассматривается как делегат?
- function-literal Golang: функция в качестве аргумента, доступ к внутреннему параметру (fasthttp)
- function-literal Заполнитель в функции Scala не работает с изменяемыми Картами