4

Google 很好地解释了如何使用可从 V8 Javascript 引擎使用的访问器来包装 C++ 类方法

但是,他们没有提到如何确定将具有这些访问器属性的 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 包装器的链接。

例如,在访问静态全局变量的示例代码中,有一行将访问器函数显式暴露给 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)
4

1 回答 1

3

好的,我找到了缺失的部分:

context->Global()->Set(String::New("p"), obj);

obj这一行将前面步骤中创建的对象包装器作为对象“p”暴露给 V8 JavaScript 的全局上下文。我在这里将它命名为“p”,但它可以是任何有效的 JavaScript 标识符。(来源

于 2010-08-19T16:55:10.807 回答