Объект scriptEngine не имеет методов.
Он может выступать только аргументом в специфичных функциях и методах,
для передачи ссылки на QScriptEngine текущего поста в функцию или метод.
(см. раздел Плагины jCJS),
а также для контроля стека вызовов скриптов
(см. раздел scriptEngine.files),
Пример использования:
//свойство параметров только чтение: // Чтение var prop = scriptEngine.property;
Константы
Только чтение
Доступны в любом скрипте и в шаблонной обработке
post.log(__FILE__ + ':' + __LINE__);
var b = 1, c = true;
qAssert(b === c)
String scriptEngine.file
Только чтение
Возвращает объект с именем и директорией текущего скрипта
Внимение! это свойство не доступно в обработчике cmd.js
var file = scriptEngine.file;
post.log(JSON.stringify(file,0,2));
/* выведет в лог
{
"dir": "C:/jCjS2/stuff/postsTable",
"name": "init.js"
}
*/
Array scriptEngine.files
Только чтение
Возвращает массив объектов со стеком вызовов скриптов
Внимение! это свойство не доступно в обработчике cmd.js
var files = scriptEngine.files;
post.log(JSON.stringify(files,0,2));
/* выведет в лог
[
{
"dir": "C:/jCjS2/stuff/postsTable",
"name": "init.js"
},
{
"dir": "C:/jCjS2/stuff/include",
"name": "jcjsDataQueueSaver.js"
}
]
*/
StringList scriptEngine.stack()
Возврящает цепочку вызовов
function test(){
post.log(JSON.stringify(scriptEngine.stack(),0,2))
}
test();
/* выведет в лог
[
"test() at jcjsHelper.js:340",
"{eval}() at jcjsHelper.js:342",
"evalScript(sname = 'jcjsHelper.js') at -1",
"{eval}() at stuff@include/init.js:4",
"evalScript(sname = 'stuff@include/init.js') at -1",
"{global}() at initServer.js:2"
]
*/
Для вывода отладочных сообщений удобно использовать функцию post.logt(),
описанную в файле jcjsHelper.js. В лог выводятся одновременно аргументы и стек
var v1 = 'abcdef',
v2 = 12345,
v3 = {g: 1, h: 'xyz'};
post.logt(v1, v2, v3);
/* выведет в лог
[
"arguments: ['abcdef',12345,{'g':1,'h':'xyz'}]",
"{eval}() at jcjsHelper.js:342",
"evalScript(sname = 'jcjsHelper.js') at -1",
"{eval}() at stuff@include/init.js:4",
"evalScript(sname = 'stuff@include/init.js') at -1",
"{global}() at initServer.js:2"
]
*/
StringList scriptEngine._debug()
Выводит отладочные переменные
Внимание! вывод отладочных сообщений не записывается в лог
и доступен только в jCjSService при запуске с параметром -e
var v1 = 'abcdef',
v2 = 12345,
v3 = {g: 1, h: 'xyz'};
scriptEngine._debug(v1, v2, v3)
/* выведет в stderr (минуя лог файл)
jcjsHelper.js:336 ()
arg1: "abcdef"
arg2: 12345
arg3: QMap(("g", QVariant(int, 1) ) ( "h" , QVariant(QString, "xyz") ) )
*/
String scriptEngine.position()
Выводит имя функции, файла, поста и номер строки
Похожий функционал выполняет функция console.file_line()
post.log( scriptEngine.position() ); // выведет в log 'jcjsHelper.js:336 test() postsTable:'
String scriptEngine.threadId()
Возвращает идентификатор потока, в котором выполняется JS контекст
post.log( scriptEngine.threadId() ); // выведет в log '0x1891c70'