可以使用 v8::Function::Equals() 方法来判断两个 JavaScript 函数是否相同。具体步骤如下:

  1. v8::Local<v8::Function> 类型的参数 f1 强制转换为 v8::Local<v8::Object> 类型,并保存为 v8::Local<v8::Object> obj1
  2. 遍历 vector<Nan::Callback*> 中所有元素,将其中每个元素强制转换为 v8::Local<v8::Function> 类型,并保存为 v8::Local<v8::Object> 类型的变量 obj2
  3. 使用 obj1->Equals(isolate, obj2) 方法判断 obj1obj2 是否相同,如果相同则说明 f1 和该元素相同。

注意,上述步骤中的 isolate 参数需要传递当前的 v8::Isolate 对象,可以使用 info.GetIsolate() 方法获取。此外,如果 vector<Nan::Callback*> 中的元素有可能为 nullptr,则需要在遍历时先判断元素是否为 nullptr,否则会导致程序崩溃

vectorNanCallback 里面函数是从JavaScript中传递的判断是否有跟v8Localv8Function f1相同的js引用 注意是js引用不是c++引用

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

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