javascript - 如何从 Javascript 访问用 C++ 创建的动态变量? (通过 V8 绑定(bind))

标签 javascript c++ v8

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)

最佳答案

好的,我找到了缺失的那 block 拼图:

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

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

关于javascript - 如何从 Javascript 访问用 C++ 创建的动态变量? (通过 V8 绑定(bind)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3523743/

相关文章:

javascript - 如何在 ProtoType 中使用 Promises *around* 回调进行方法链接

javascript - 循环范围 : 1 to 1000 的 Json mustache

c++ - 形状跟踪程序的优化 - C++ OpenCV

C++/OOP 关联模型和数据库

javascript - JavaScript 是否具有与 Python 的 __getattribute__ 等效的功能?

javascript - jQuery Filter - 如何设置除 "All"之外的不同事件按钮?

javascript - 使用 gtag.js 安装 Google 跟踪代码管理器

c++ - 运行重复的测试报告作为不同的测试

node.js - 为什么尝试写入大文件会导致 js 堆内存不足

ruby - 从 V8 上下文获取 ruby​​ 异常