Я читал учебник SpiderMonkey о том, как встраивать и выполнять код javascript в программе c ++ через JSAPI spidermoneky.
но я не совсем понял, что делают глобальные объекты и какова роль JS_class и JS_NewGlobal?
также, что это означает, настраивая ваши глобальные объекты?
В JavaScript у вас есть пространство имен верхнего уровня, которое на самом деле имеет свойства, аналогичные обычным объектам JavaScript, поэтому оно называется «глобальный объект». То, что вы обычно воспринимаете как глобальные переменные в языке типа C, обычно является свойствами глобального объекта. Там также есть функции верхнего уровня, поэтому вы видите привязки для таких вещей, как srand
а также system
создается для глобального объекта в этом документе. Возможно, вы захотите поместить разные функции в разные глобальные среды. Embedders любят делать все виды настройки вещей.
JS_Class
является концепцией SpiderMonkey для нативного типа, который поддерживает объекты во время выполнения JS. Когда вы хотите создать новый, специальный встроенный тип, вы делаете это, определяя JS_Class, а затем объекты, созданные в классе, могут проверить свой класс в нативном коде, чтобы увидеть, соответствует ли он. НТН!
Других решений пока нет …