Раздел: Сайтостроение / JavaScript /

Конструктор Function() в JavaScript

Программирование на JavaScript с Нуля до Гуру 2.0 Программирование на JavaScript

Видеокурс о программировании на JavaScript. Содержит 8 больших разделов от основ до работы с сетевыми запросами. В комплекте 5 подарков - мини-курсов по темам, связанным с сайтостроением. 72 урока продолжительностью более 13 часов. Упражнения и примеры исходных кодов. Поддержка от автора. Подробнее...

Достаточно подробно о функциях в 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>

Думаю, что дополнительных пояснений тут уже не требуется. В браузере это будет выглядеть примерно так:

Конструктор Function() в JavaScript


Что такое JavaScript Что такое JavaScript

Небольшая книга о JavaScript, которая поможет вам в изучении JavaScript. В книге и рассылке сведения для начинающих: что такое JavaScript, как это работает, письма, которые помогут принять решение, надо ли вам это или нет, а также полезные ссылки на обучающие материалы. Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика