gpt4 book ai didi

c++ - NodeJS Nan C++ 将嵌套对象绑定(bind)到插件实例

转载 作者:太空狗 更新时间:2023-10-29 22:55:12 24 4
gpt4 key购买 nike

在我目前正在处理的 C++ NodeJS 项目中,我想要一个包含嵌套对象的对象,例如

console.log(object.myObject); // { [keys: string]: any }

在没有将对象绑定(bind)到属性的情况下,我的插件运行良好。我用

创建实例
auto ctor = Nan::New<v8::FunctionTemplate>(New);
auto ctorInst = ctor->InstanceTemplate();

并将对象绑定(bind)到类实例上

v8::Local<v8::Object> obj = Nan::New<v8::Object>();
ctorInst->Set(Nan::New("myObject").ToLocalChecked(), obj);

在执行 JS 代码时打印以下内容(创建 C++ 扩展的实例)。

# Fatal error in , line 0

# Check failed: !value_obj->IsJSReceiver() || value_obj->IsTemplateInfo().

另一方面,绑定(bind)原语(数字、字符串等)可以完美地工作。

ctorInst->Set(Nan::New("myObject").ToLocalChecked(), Nan::New<v8::Number>(42));

您有什么建议吗?谢谢,干杯!

最佳答案

所有模板(包括 InstanceTemplate 的模板)中只能包含其他模板或基元。如您所见,IsTemplateInfo 为假,而它本应为真。提出并回答了类似的问题here .只需制作一个 ObjectTemplate然后像使用 FunctionTemplate 一样填充它。

只有当模板被实例化时(使用 GetFunction),您才能用真实的对象填充它。

关于c++ - NodeJS Nan C++ 将嵌套对象绑定(bind)到插件实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52906437/

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