Google足以解释如何wrap C++ class methods with accessors that can be used from the V8 Javascript engine。
但是,他们没有提到如何确定将具有这些访问者属性的JavaScript对象的名称。
如何告诉V8 Javascript C ++类实例的名称(来自示例)是什么?或者,如果它已有名称,那是什么?
这两行设置了访问者:
point_templ.SetAccessor(String::New("x"), GetPointX, SetPointX);
point_templ.SetAccessor(String::New("y"), GetPointY, SetPointY);
我认为它们可以像JavaScript一样使用:
someObject.x = someObject.y * 2;
如何确定“someObject
”是什么?
我觉得有一些代码缺失,完成了将C ++代码与V8 Javascript包装器链接。
例如,在access static global variables的示例代码中,有一行明确地将访问者函数公开给V8 JavaScript:
Handle<ObjectTemplate> global_templ = ObjectTemplate::New();
global_templ->SetAccessor(String::New("x"), XGetter, XSetter);
global_templ->SetAccessor(String::New("y"), YGetter, YSetter);
Persistent<Context> context = Context::New(NULL, global_templ)
答案 0 :(得分:3)
好的,我发现了这个难题的缺失部分:
context->Global()->Set(String::New("p"), obj);
此行将前面步骤中创建的对象包装器obj
公开为V8 JavaScript的全局上下文,作为对象“p”。我在这里将它命名为“p”,但它可以是任何有效的JavaScript标识符。 (source)