У меня есть модуль C++, который вызывается из node.js. Я хотел бы передать хэш и получить ключи и значения из кода C++, но я не могу понять, как их получить. Вот что я хотел бы обработать:
var mod = require('MyModule')
var conn = mod.createConnection()
conn.connect( { 'uid': 'graeme',
'pwd': 'mypassword' } )
Внутри моего метода C++ я могу использовать args[0]->IsObject()
чтобы определить, что этот параметр является хэшем, но я не могу найти способ получить ключи ("uid", "pwd") или значения ('graeme', 'mypassword') из него.
Есть ли способ получить ключи и значения из этих объектов?
Ваш второй пример прохождения в массиве на самом деле не имеет смысла, но, к вашему общему мнению, вы можете использовать GetOwnPropertyNames
для чтения имен свойств.
Local<Object> obj = args[0].As<Object>();
Local<Array> props = obj->GetOwnPropertyNames();
for (int i = 0, len = props->Length(); i < len; i++){
Local<String> key = props->Get(i).As<String>();
Local<Value> val = obj->Get(key);
}
эквивалентно:
var props = Object.getOwnPropertyNames(arguments[0]);
for (var i = 0, len = props.length; i < len; i++){
var key = props[i];
var value = arguments[0][key];
}
cs['uid'] = 'graeme'
не добавляет в массив, он присваивает атрибут тангенциально значениям в массиве.