如何在V8上下文中公开类方法?
我喜欢创建类似跟随行的东西,但它不会发生事实,带有捕获的lambda不能被视为函数指针。
Global()->Set("foo",v8::FunctionTemplate::New([this](const v8::Arguments &args) -> v8::Handle<v8::Value>{this->foo()}; return v8::Undefined()));
它不是将文字类型公开为struct Point {int x,y}
,而是公开类方法或简单的可调用对象。
答案 0 :(得分:0)
这就是我为实现它所做的。
context->Global()->Set(v8::String::New("_this"),v8::External::Wrap(this));
context->Global()->Set(v8::String::New("foo"),v8::FunctionTemplate::New(
[](const v8::Arguments &args) -> v8::Handle<v8::Value>{
reinterpret_cast<Foo*>(reinterpret_cast<v8::External*>(*(args.This()->Get(v8::String::New("engine"))))->Value())->foo();
return v8::Undefined();
})->GetFunction());