Раздел: Сайтостроение / JavaScript /
Конструктор Function() в JavaScript
Что такое JavaScript
Небольшая книга о JavaScript, которая поможет вам в изучении JavaScript. В книге и рассылке сведения для начинающих: что такое JavaScript, как это работает, письма, которые помогут принять решение, надо ли вам это или нет, а также полезные ссылки на обучающие материалы. Подробнее... |
Достаточно подробно о функциях в JavaScript я рассказал здесь, но упустил одну возможность - создание функций с помощью конструктора.
Эта возможность используется редко, но она существует. И знать о ней лишним не будет.
Кроме обычного определения функции и функциональных литералов, в JavaScript ещё можно использовать конструктор
Function()
. Обратите внимание, что слово пишется с большой буквы, и, надеюсь, вы помните, что JavaScript чувствителен к регистру.
Итак, вот пример:
var kub = new Function("x", "return x*x*x;");
Здесь мы определяем новую функцию с именем kub
, которая возводит число в третью степень. Поскольку
Function
- это конструктор, то для создания новой функции используется new
.
В конструктор передаётся список аргументов функции и код функции. Аргументов может быть несколько. Например:
var kubPlus = new Function("x, y", "return x*x*x + y;");
Далее эту функцию можно использовать обычную функцию в JavaScript.
Если сценарий выполняется в браузере, то об очистке памяти можно и не заботиться, потому что после закрытия браузера память будет освобождена. Кроме того, все браузеры имеют сборщики мусора, которые отслеживают работу сценариев и удаляют из памяти ненужные данные.
Однако для того, чтобы понять, что данные уже не нужны, браузер должен убедиться, что ссылок на эти данные больше нет. А для этого всё-таки не лишним будет удалить эти ссылки в программе, если эти данные больше не будут использоваться. Поэтому после того, как функция уже не нужна, надо сделать хотя бы так:
kub = null;
Таким образом по имени kub
данные будут недоступны, а это будет означать, что имя kub
ни на что не ссылается и мусор, которым стал код функции, ранее связанной с этим именем, теперь можно удалить. Что браузер и сделает.
Ну и напоследок пример кода:
<body> <h1 id="myheader">Конструктор Function()</h1> <script> <!-- var kub = new Function("x", "return x*x*x;"); var kubPlus = new Function("x, y", "return x*x*x + y;"); var y = 100; x = 5; document.write(x + "<sup>3</sup>" + " = " + kub(x) + "<br>"); document.write(x + "<sup>3</sup> + " + y + " = " + kubPlus(x, y)); kubPlus = null; kub = null; document.write("<br><br>Память освобождена"); // --> </script> </body>
Думаю, что дополнительных пояснений тут уже не требуется. В браузере это будет выглядеть примерно так:
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Программирование на JavaScript
Видеокурс о программировании на JavaScript. Содержит 8 больших разделов от основ до работы с сетевыми запросами. В комплекте 5 подарков - мини-курсов по темам, связанным с сайтостроением. 72 урока продолжительностью более 13 часов. Упражнения и примеры исходных кодов. Поддержка от автора. Подробнее... |