【问题标题】:How can I access a dynamic variable created in C++ from Javascript? (bound via V8)如何从 Javascript 访问用 C++ 创建的动态变量? (通过 V8 绑定)
【发布时间】:2010-08-19 16:05:10
【问题描述】:

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)

【问题讨论】:

    标签: javascript c++ v8


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 2022-04-26
      • 1970-01-01
      • 2014-10-11
      • 2013-06-04
      相关资源
      最近更新 更多