V8 C ++ API Store Функция Указатель? - PullRequest
0 голосов
/ 06 февраля 2012

Этот вопрос относится к API C ++ V8.

Я хотел бы сохранить глобальную ссылку на функцию javascript из контекста, то есть вместо сохранения функции в локальном дескрипторе

Local<Function> init = ...

Я хотел бы сохранить его в постоянном дескрипторе

Persistent<Function> init = ...

Я думаю, что правильный способ сделать это так:

Local<Function> l_init = ...
Persistent<Function> init =  currentScope.Close(l_init);

но currentScope.Close () возвращает локальный дескриптор.Могу ли я кэшировать дескриптор в качестве члена класса, чтобы мне не приходилось делать каждый кадр Get?

Могу ли я просто иметь Local в качестве переменной класса, назначить ее с помощью currentScope.Закройте и отпустите его, когда я закончу с функцией Dispose ?

1 Ответ

1 голос
/ 08 февраля 2012

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

В вашем примере я думаю, что вы хотите сделать следующее:

v8::Persistent<v8::Function> init = v8::Persistent<v8::Function>::New(l_init); 
...