Nan::ObjectWrap to Napi::Object Wrap 无法访问 JavaScript 中的属性
Nan::ObjectWrap to Napi::Object Wrap can't access to properties in JavaScript
我已经将代码从Nan修改为Napi(C++插件(。此代码使用ObjectWrap类。在使用Nan之前,当我试图获得节点插件返回的对象的属性时,它是有效的。
console.log(Object.keys(result));
[ 'bool', 'string', 'int', 'float', 'vtype' ]
现在,使用Napi,当我尝试相同的命令时,我会得到:
[]
但对房产的访问仍在继续:
console.log(result.bool);
false
我的初始化代码:
Napi::Object JSVariant::Init(Napi::Env env, Napi::Object exports)
{
Napi::HandleScope scope(env);
Napi::Function ctor = DefineClass(env, "JSVariant", {InstanceAccessor("vtype", &JSVariant::GetVTypeValue, &JSVariant::SetVTypeValue), InstanceAccessor("float", &JSVariant::GetFltValue, &JSVariant::SetFltValue), InstanceAccessor("int", &JSVariant::GetIntValue, &JSVariant::SetIntValue), InstanceAccessor("string", &JSVariant::GetStringValue, &JSVariant::SetStringValue), InstanceAccessor("bool", &JSVariant::GetBoolValue, &JSVariant::SetBoolValue)});
constructor = Napi::Persistent(ctor);
constructor.SuppressDestruct();
exports.Set("JSVariant", ctor);
return exports;
}
有没有办法用纳皮得到楠的结果?
我不知道你原来的Nan代码看起来怎么样,但
Object.keys
无法使用prototype
对象中的属性,这正是您正在执行的操作InstanceAccessor
有一个可选的第四个参数,它采用napi_propety_attributes
值,您必须将其设置为napi_enumerable
才能使属性可见,但只有在Object.keys(Object.getPrototypeOf(obj))
中才会如此
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- Nan::ObjectWrap to Napi::Object Wrap 无法访问 JavaScript 中的属性
- 访问类似C++的Javascript中的HttpStatusCode
- QtWebkit javascript bridge,无法访问 Qt 对象方法
- 在QWebview中使用javascript访问文件系统
- 在 javascript 中访问对象的成员C++而无需注册其成员
- 如何使用V8从C++访问和调用Javascript对象属性和方法
- XPCOM对象方法无法从JavaScript访问
- 使用QJSEngine从JavaScript访问Qt API
- JavaScript V8 回调中的访问'Arguments'
- 如何在CEF3中使用JavaScript访问C++中的动态字符串值
- 无法使用 QtWebkit 通过 javascript 访问 Qt 对象方法