【发布时间】:2017-03-24 19:28:12
【问题描述】:
我像这样将一个 js 对象传递给我的函数
myFunc.do({'1':2});
我想std::cout c++ 中我的对象中的那些键值对
这就是我所拥有的
Handle<Object> object = Handle<Object>::Cast(args[i]);
Local<Array> objArray = object->GetPropertyNames();
for(uint o=0; o < objArray->Length(); o++) {
Local<Value> val = objArray->Get(o);
v8::String::Utf8Value str(val->ToString());
std::string foo = std::string(*str);
std::cout << "val is= " << foo;
}
return;
我对 object->GetPropertyNames(); 做错了,因为它没有让我得到传递的值
更新 这是另一个无用的尝试
Local<Context> context = isolate->GetCurrentContext();
Local<Object> object = Local<Object>::Cast(args[i]);
Local<Array> props;
if (!object->GetOwnPropertyNames(context).ToLocal(&props)) {
std::cout << "Error";
return;
}
for (uint32_t p = 0; p < props->Length(); ++p) {
Local<Value> name;
Local<Value> property_value;
props->Get(context, p).ToLocal(&name);
v8::String::Utf8Value str(name->ToString());
std::string foo = std::string(*str);
std::cout << "val is= " << foo; // outputs 0
}
感谢帮助
【问题讨论】: