0

可以说我的班级是这样的:

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

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

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

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

到目前为止,我将 DataValue 的 v8 对象引用值添加到我的 javascript 代码中。

在调试时,我看到 v8::Value 在从向量中获取项目后不再存在。我只有一个 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 值或对象。

谢谢

4

1 回答 1

1

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

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;

希望这会有所帮助...

于 2013-04-04T09:14:41.487 回答