如何为 v8::Object 分配名称以便脚本可以访问它?
How do I assign a name to a v8::Object so that scripts can access it?
我目前正在尝试使用 v8 向我的 C++ 应用程序添加脚本功能。目标是用JS处理缓冲区中的一些数据,然后return结果。我想我可以通过将 New 与适当的 BackingStore
结合使用来生成 ArrayBuffer
。结果将是本地的。我现在想通过 v8::Script::Compile
和 v8::Script::Run
运行 脚本。 ArrayBuffer 的名称是什么 - 或者我如何为其分配名称以便在脚本中访问它?如果我需要在同一个 ArrayBuffer
上 运行 多个脚本,是否需要将其设为 Global
?
如果您希望脚本能够访问 my_array_buffer
,那么您必须将 ArrayBuffer 作为 属性 安装在全局对象上。请参阅从那里链接的 https://v8.dev/docs/embed for an introduction to embedding V8, and the additional examples。简而言之,它会归结为:
global_object->Set(context,
v8::String::NewFromUtf8(isolate, "my_array_buffer"),
array_buffer);
您无需将 ArrayBuffer 存储在 Global
中即可工作。
我目前正在尝试使用 v8 向我的 C++ 应用程序添加脚本功能。目标是用JS处理缓冲区中的一些数据,然后return结果。我想我可以通过将 New 与适当的 BackingStore
结合使用来生成 ArrayBuffer
。结果将是本地的。我现在想通过 v8::Script::Compile
和 v8::Script::Run
运行 脚本。 ArrayBuffer 的名称是什么 - 或者我如何为其分配名称以便在脚本中访问它?如果我需要在同一个 ArrayBuffer
上 运行 多个脚本,是否需要将其设为 Global
?
如果您希望脚本能够访问 my_array_buffer
,那么您必须将 ArrayBuffer 作为 属性 安装在全局对象上。请参阅从那里链接的 https://v8.dev/docs/embed for an introduction to embedding V8, and the additional examples。简而言之,它会归结为:
global_object->Set(context,
v8::String::NewFromUtf8(isolate, "my_array_buffer"),
array_buffer);
您无需将 ArrayBuffer 存储在 Global
中即可工作。