Объект scriptEngine не имеет методов.
Он может выступать только аргументом в специфичных функциях и методах,
для передачи ссылки на QScriptEngine текущего поста в функцию или метод.
(см. раздел Плагины jCJS), а также для контроля стека вызовов скриптов (см. раздел scriptEngine.files),

Свойства (property)

Пример использования:

//свойство параметров только чтение:
// Чтение
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'



  • Описание объектов