gpt4 book ai didi

javascript - 如何在 C++ vector 上从 javascript 存储和调用 v8::Value

转载 作者:行者123 更新时间:2023-11-28 07:41:21 25 4
gpt4 key购买 nike

假设我的类(class)是这样的:

namespace foo
{
class Item
{
public:
Item();
~Item();

std::string Name;
v8::Local<v8::Value> DataValue;
bool ReadOnly;
};

static std::vector<Item *> GlobalCollection;
}

我有一个 Item vector ,我的 getMessage("Name") 必须在 vector 内部搜索以找到对应的名称后返回 Item 类的 DataValue 成员。

到目前为止,我正在为我的 javascript 代码获取 DataValue 的 v8 对象引用值。

在调试时,我发现 v8::Value 在从 vector 中获取 Item 后不再存在。我只有一个 v8::Object 值而不是实际数据。

我正在努力实现(javascript):

var a = my.global('VAR1', 1); // returns true / false
var b = my.global('VAR1'); // must return 1 (number)

var x = 'Store this globaly!';
var c = my.global("VAR2", x); // returns true / false
var d = my.global("VAR2"); // must return string "Store this globaly!"

x 可以是任何 javascript 值或对象。

谢谢

最佳答案

一种可能的解决方案如下:未测试功能值...

class Item
{
public:
Item();
~Item();

std::string Name;
v8::Persistent<v8::Object> DataValue;
bool ReadOnly;
};

INSIDE SET FUNCTION:
v8::Local<v8::Object> dataValue;

item = new foo::Item();
item->Name = varName;
item->DataValue = v8::Persistent<v8::Object>::New(dataValue);

std::vector<foo::Item *>::iterator it;
it = foo::GlobalCollection.end();
it = foo::GlobalCollection.insert(it, item);

INSIDE GET FUNCTION:
v8::Local<v8::Value> ret;
foo::Item *item = bla-bla...;
ret = v8::Local<v8::Value>::New(item->DataValue);
return ret;

希望这会有所帮助...

关于javascript - 如何在 C++ vector 上从 javascript 存储和调用 v8::Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com