1# 使用JSVM-API接口进行Wrapper object相关开发 2<!--Kit: NDK Development--> 3<!--Subsystem: arkcompiler--> 4<!--Owner: @yuanxiaogou; @string_sz--> 5<!--Designer: @knightaoko--> 6<!--Tester: @test_lzz--> 7<!--Adviser: @fang-jinxu--> 8 9## 简介 10 11JSVM-API中,装箱类型(Wrapper object)判断相关接口支持通过不同API快速判断object的装箱类型。 12 13## 基本概念 14 15在JSVM-API中,装箱类型相关接口提供快速判断5种装箱类型的能力。 16 17## 接口说明 18 19| 接口 | 功能说明 | 20|----------------------------------------|--------------------------------| 21| OH_JSVM_IsNumberObject | 判断是否是Number Object。 | 22| OH_JSVM_IsBooleanObject | 判断是否是Boolean Object。 | 23| OH_JSVM_IsBigIntObject | 判断是否是BigInt Object。 | 24| OH_JSVM_IsStringObject | 判断是否是String Object。 | 25| OH_JSVM_IsSymbolObject | 判断是否是Symbol Object。 | 26 27## 使用示例 28 29JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅展示接口对应的C++代码。 30 31### 使用接口判断是否是Number Object 32 33cpp部分代码: 34 35```cpp 36#include <string> 37 38static JSVM_Value WrapperObject(JSVM_Env env, JSVM_CallbackInfo info) { 39 JSVM_VM vm; 40 OH_JSVM_GetVM(env, &vm); 41 42 JSVM_HandleScope handleScope; 43 OH_JSVM_OpenHandleScope(env, &handleScope); 44 std::string src = R"JS(new Number(42))JS"; 45 JSVM_Value jsSrc; 46 JSVM_Script script; 47 JSVM_Value result; 48 49 OH_JSVM_CreateStringUtf8(env, src.c_str(), JSVM_AUTO_LENGTH, &jsSrc); 50 OH_JSVM_CompileScript(env, jsSrc, nullptr, 0, true, nullptr, &script); 51 OH_JSVM_RunScript(env, script, &result); 52 bool isNumberObject = false; 53 OH_JSVM_IsNumberObject(env, result, &isNumberObject); 54 OH_LOG_INFO(LOG_APP, "JSVM OH_JSVM_IsNumberObject: %{public}d\n", isNumberObject); 55 OH_JSVM_CloseHandleScope(env, handleScope); 56 57 return nullptr; 58} 59 60static JSVM_CallbackStruct param[] = { 61 {.data = nullptr, .callback = WrapperObject}, 62}; 63 64static JSVM_CallbackStruct *method = param; 65 66// wrapperObject方法别名,供JS调用 67static JSVM_PropertyDescriptor descriptor[] = { 68 {"wrapperObject", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT}, 69}; 70 71// 样例测试JS 72const char *srcCallNative = R"JS(wrapperObject();)JS"; 73 74``` 75 76预期输出: 77``` 78JSVM OH_JSVM_IsNumberObject: 1 79``` 80