#include <v8.h>
using namespace v8;
int main()
{
Isolate* isolate = Isolate::GetCurrent();
HandleScope handleScope(isolate);
Handle<Context> context = Context::New(isolate);
Context::Scope context_scope(context);
Handle<String> string = String::New("function Person () { this.name = 'headool'}");
Handle<Script> script = Script::Compile(string);
script->Run();
Handle<Value> value_person = context->Global()->Get(String::New("Person"));
Handle<Function> person_constructor = Handle<Function>::Cast(value_person);
Handle<Value> obj_value_person = person_constructor->CallAsConstructor(0, NULL);
Handle<Object> obj_person = Handle<Object>::Cast(obj_value_person);
String::AsciiValue ascii(obj_person->Get(String::New("name")));
printf("%s\n", *ascii);
return 0;
}
注意其中的:
Handle<Value> obj_value_person = person_constructor->CallAsConstructor(0, NULL);
Handle<Object> obj_person = Handle<Object>::Cast(obj_value_person);
Handle<Value> obj_value_person = person_constructor->CallAsConstructor(0, NULL);
Handle<Object> obj_person = Handle<Object>::Cast(obj_value_person);
本文深入探讨了如何在V8 JavaScript引擎中使用C++直接调用JavaScript构造函数,揭示了二者交互的关键步骤和技术细节。
3589

被折叠的 条评论
为什么被折叠?



