我如何在V8中公开类方法

时间:2014-12-23 22:27:00

标签: javascript c++ v8

如何在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},而是公开类方法或简单的可调用对象。

1 个答案:

答案 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());