HarmonyOS JSVM 如何实现binding方法在某个对象上

doc上描述的demo比较简单,直接在创建JSVM_Env的时候绑定了几个方法。在实际的生产环境中,会在特定的对象上动态binding方法,能否提供一个demo或者提供一个教程。

JSVM_CallbackStruct param[] = { 
  {.data = nullptr, .callback = ConsoleInfo}, 
{.data = nullptr, .callback = Add}, 
}; 
JSVM_PropertyDescriptor descriptor[] = { 
  {"consoleinfo", NULL, ¶m[0], NULL, NULL, NULL, JSVM_DEFAULT}, 
{"add", NULL, ¶m[1], NULL, NULL, NULL, JSVM_DEFAULT}, 
}; 
// create env, register native method, and open env scope 
JSVM_Env env; 
OH_JSVM_CreateEnv(vm, sizeof(descriptor) / sizeof(descriptor[0]), descriptor, &env);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
HarmonyOS
2024-09-11 11:51:25
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

参考demo:

static JSVM_Value SayHello(JSVM_Env env, JSVM_CallbackInfo info) { 
  OH_LOG_INFO(LOG_APP, "Hello World"); 
  JSVM_Value ret; 
  OH_JSVM_GetBoolean(env, true, &ret); 
  return ret; 
} 
JSVM_Value funcValue = nullptr; 
JSVM_CallbackStruct param; 
param.data = nullptr; 
param.callback = SayHello; 
OH_JSVM_CreateFunction(env, "sayHello", NAPI_AUTO_LENGTH, ¶m, &funcValue); 
JSVM_Value global; 
OH_JSVM_GetGlobal(env, &global); 
OH_JSVM_SetNamedProperty(env, global, "sayHello", funcValue); 
JSVM_Value func; 
OH_JSVM_GetNamedProperty(env, global, "sayHello", &func); 
JSVM_Value ret; 
OH_JSVM_CallFunction(env, nullptr, func, 0, nullptr, &ret);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
分享
微博
QQ
微信
回复
2024-09-11 15:18:30
相关问题
HarmonyOS JSVM是否Gitee开源?
805浏览 • 1回复 待解决
如何判断对象某个interface的实现
1804浏览 • 1回复 待解决
如何判断一个对象实现某个接口
2404浏览 • 1回复 待解决
Native侧释放ArkTS对象方法
1346浏览 • 1回复 待解决
如何判断JS对象中是否存在某个
3114浏览 • 1回复 待解决
HarmonyOS 如何获取对象方法列表
1138浏览 • 1回复 待解决
RSA加密方法HarmonyOS实现
748浏览 • 1回复 待解决