Выполнение кода
Название | Описание | Тип |
---|---|---|
OpenCodeLib() | Возвращает функции находящиеся в файле. | Встроенная |
EvalCodeUrl() | Загружает код на JavaScript из заданного url и выполняет его. | Встроенная |
OpenCodeLib()
Открывает документ либо с расширением .xml, содержащий набор методов, и возвращает его корневой элемент, либо с расширением .js, содержащий функции, возвращает псевдо-документ (псевдо-форму), содержащую те же функции. Действие этой функции похоже на действие функции EvalCodeUrl, но не тождественны ей. Если мы выполняем сторонние функции при помощи EvalCodeUrl, то переменные из нашего кода видны внутри сторонних функций, что может привести к разрушению кода при совпадении названий переменных. OpenCodeLib лишен этого недостатка, так как приводит к загрузке функций из внешнего источника как независимых методов, каждый из которых выполняется в собственном окружении. Но в этом случае, в отличие от EvalCodeUrl, загружаемый js-файл не может содержать глобальных переменных, а только функции.
/**
* Возвращает функции находящиеся в файле
* @param {String} url загружаемого документа с расширением .xml или .js
* @return {Object XmlDoc}
*/
function OpenCodeLib(url) {...}
// Пример
var Super = OpenCodeLib("x-local://wt/web/super-scripts/super.js");
// Используем функцию из подгруженного файла
Super.Hello("Привет");
// Пример
OpenCodeLib("lib_backup.js").RunBackup();
EvalCodeUrl()
/**
* Загружает код на JavaScript из заданного url и выполняет его.
* @param {String} codeUrl url, содержащий код
* @param {String} subCode вспомогательный код, выполняемый после выполнения основного кода. Как правило, содержит вызов функции, описанный в основном коде. Необязательный аргумент.
* @return {Any}
*/
function EvalCodeUrl(url, subCode) {...}
// Пример
EvalCodeUrl('backup/rcr_lib_backup.js', 'RunBackup()')
Внимание!
Использование данной функции для вызова функций, описанных в файле, не рекомендуется после появления функции OpenCodeLib(), предлагающей более понятные правила области видимости переменных:
OpenCodeLib( 'rcr_lib_backup.js' ).RunBackup()