以下是使用 Nan.h 实现的代码:

#include <nan.h>

using namespace Nan;

// 创建一个js对象
Local<Object> createObject() {
  Local<Object> obj = New<Object>();
  // 设置对象属性
  obj->Set(New<String>('x').ToLocalChecked(), New<Number>(1));
  obj->Set(New<String>('y').ToLocalChecked(), New<Number>(2));
  obj->Set(New<String>('type').ToLocalChecked(), New<Number>(3));
  return obj;
}

// 调用传入的回调函数
void callCallback(const FunctionCallbackInfo<Value>& args) {
  Nan::HandleScope scope;
  // 获取回调函数
  Local<Function> callback = Local<Function>::Cast(args[0]);
  // 创建一个js对象
  Local<Object> obj = createObject();
  // 调用回调函数,传入js对象作为参数
  Local<Value> argv[] = { obj };
  callback->Call(1, argv);
}

// 导出模块
NAN_MODULE_INIT(Init) {
  // 导出callCallback函数
  Nan::Set(target, New<String>('callCallback').ToLocalChecked(),
           GetFunction(New<FunctionTemplate>(callCallback)).ToLocalChecked());
}

NODE_MODULE(addon, Init)

在这个例子中,我们创建了一个名为createObject的函数,它将返回一个包含 {x: 1, y: 2, type: 3} 的js对象。然后,我们创建了一个名为callCallback的函数,它将获取传入的回调函数并调用它,将createObject函数返回的js对象作为参数传递给它。

最后,我们将callCallback函数导出为一个名为callCallback的模块方法,以便在Node.js中使用。

Node.js C++ 使用 Nan.h 构建 JS 对象并调用回调函数

原文地址: https://www.cveoy.top/t/topic/os9x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录