Доступ к «аргументам» в обратном вызове JavaScript V8

Я хотел бы иметь доступ к Arguments& args обратного вызова. Прямо сейчас, когда я устанавливаю функцию C++ для вызова со стороны JavaScript, это выглядит так:

global->Set(String::New("login"), FunctionTemplate::New(Login));

И прототип функции C++:

Handle<Value> MyClass::Login(const Arguments& args)

Как мне получить доступ к этому Arguments& args, чтобы я мог передать переменную, когда происходит обратный вызов? Спасибо за помощь.


person Sam Youtsey    schedule 18.07.2011    source источник


Ответы (1)


v8::Arguments::Length() вернет количество аргументов, переданных из JavaScript. Доступ к переменной v8::Arguments& осуществляется с помощью индекса массива.

for (int32_t index = 0; index < arguments->Length(); ++index) {
  if (arguments[index]->IsString()) {
    ::printf("%s\n", *v8::String::Utf8Value(arguments[index]->ToString()));
  }
}

Онлайн-версию документации v8::Arguments можно найти по адресу http://izs.me/v8-docs. /classv8v8::Arguments::Length()1Arguments.html, однако я не гарантирую, что он актуален или останется в сети.

Выполнение следующей команды из верхней части исходного дерева V8 приведет к локальному созданию документации с использованием doxygen.

$ cd include && doxygen -g && doxygen

Если doxygen выполняется успешно, вы можете получить доступ к документации в include/html/index.html.

person Mike Steinert    schedule 23.08.2011