• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# jsvm.h
2<!--Kit: Common Basic Capability-->
3<!--Subsystem: arkcompiler-->
4<!--Owner: @yuanxiaogou; @string_sz-->
5<!--Designer: @knightaoko-->
6<!--Tester: @test_lzz-->
7<!--Adviser: @fang-jinxu-->
8
9## 概述
10
11提供JSVM-API接口定义。通过API接口为开发者提供独立、标准、完整的JavaScript引擎能力,包括管理引擎生命周期、编译运行JS代码、实现JS/C++跨语言调用、拍摄快照等。
12
13**引用文件:** <ark_runtime/jsvm.h>
14
15**库:** libjsvm.so
16
17**系统能力:** SystemCapability.ArkCompiler.JSVM
18
19**起始版本:** 11
20
21**相关模块:** [JSVM](capi-jsvm.md)
22
23## 汇总
24
25### 宏定义
26
27| 名称                                               | 描述                                                                                                                                                 |
28|--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
29| **JSVM_VERSION_EXPERIMENTAL** 2147483647           | JSVM 实验性版本号。                                                                                                                                       |
30| **JSVM_VERSION** 8                                 | JSVM 版本号。                                                                                                                                          |
31| **JSVM_EXTERN  attribute**(visibility("default")))  | 指定符号对外部可见。                                                                                                                                         |
32| **JSVM_AUTO_LENGTH**   SIZE_MAX | 自动长度。                                                                                                                                              |
33| **EXTERN_C_START**                                 | 用于告知编译器按C Code编译以下代码段的段起始标识:<br>当预处理指令__cplusplus检查到C++编译器正在进行编译时:EXTERN_C_START被赋值为"extern "C" {" ,表示其后代码为C代码。当预处理指令__cplusplus检查到不是C++编译器时,无须标记。 |
34| **EXTERN_C_END**                                   | 用于告知编译器按C Code编译以下代码段的段终止标识:<br>当使用预处理指令__cplusplus检查到C++编译器正在编译时:EXTERN_C_START被赋值为"}" ,表示C代码到此为止。当预处理指令__cplusplus检查到不是C++编译器时,无须标记。                                                                                                                   |
35
36### 函数
37
38| 名称 | 描述 |
39| -- | -- |
40| [JSVM_EXTERN JSVM_Status OH_JSVM_Init(const JSVM_InitOptions* options)](#oh_jsvm_init) | 初始化一个JavaScript虚拟机。 |
41| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateVM(const JSVM_CreateVMOptions* options,JSVM_VM* result)](#oh_jsvm_createvm) | 创建一个虚拟机实例。 |
42| [JSVM_EXTERN JSVM_Status OH_JSVM_SetMicrotaskPolicy(JSVM_VM vm,JSVM_MicrotaskPolicy policy)](#oh_jsvm_setmicrotaskpolicy) | 用于设置虚拟机实例的微任务执行策略。如果该方法未被调用,虚拟机实例的默认策略为 JSVM_MicrotaskPolicy::JSVM_MICROTASK_AUTO。 |
43| [JSVM_EXTERN JSVM_Status OH_JSVM_DestroyVM(JSVM_VM vm)](#oh_jsvm_destroyvm) | 销毁一个虚拟机实例。 |
44| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateProxy(JSVM_Env env,JSVM_Value target,JSVM_Value handler,JSVM_Value* result)](#oh_jsvm_createproxy) | 创建JavaScript Proxy,等价于在 JavaScript 中执行 new Proxy(target, handler)。 |
45| [JSVM_Status JSVM_CDECL OH_JSVM_IsProxy(JSVM_Env env,JSVM_Value value,bool* isProxy)](#oh_jsvm_isproxy) | 判断传入值value是否为 JavaScript Proxy。 |
46| [JSVM_Status JSVM_CDECL OH_JSVM_ProxyGetTarget(JSVM_Env env,JSVM_Value value,JSVM_Value* result)](#oh_jsvm_proxygettarget) | 获取 JavaScript Proxy 中的目标对象。 |
47| [JSVM_EXTERN JSVM_Status OH_JSVM_OpenVMScope(JSVM_VM vm,JSVM_VMScope* result)](#oh_jsvm_openvmscope) | 为虚拟机实例打开一个新的虚拟机作用域。 |
48| [JSVM_EXTERN JSVM_Status OH_JSVM_CloseVMScope(JSVM_VM vm,JSVM_VMScope scope)](#oh_jsvm_closevmscope) | 关闭虚拟机实例的虚拟机作用域。 |
49| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateEnv(JSVM_VM vm,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_Env* result)](#oh_jsvm_createenv) | 基于新环境上下文的可选属性,创建一个新环境。 |
50| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateEnvFromSnapshot(JSVM_VM vm,size_t index,JSVM_Env* result)](#oh_jsvm_createenvfromsnapshot) | 基于虚拟机的起始快照,创建一个新的环境。 |
51| [JSVM_EXTERN JSVM_Status OH_JSVM_DestroyEnv(JSVM_Env env)](#oh_jsvm_destroyenv) | 销毁环境。 |
52| [JSVM_EXTERN JSVM_Status OH_JSVM_OpenEnvScope(JSVM_Env env,JSVM_EnvScope* result)](#oh_jsvm_openenvscope) | 打开一个新的环境作用域。 |
53| [JSVM_EXTERN JSVM_Status OH_JSVM_CloseEnvScope(JSVM_Env env,JSVM_EnvScope scope)](#oh_jsvm_closeenvscope) | 关闭环境作用域。 |
54| [JSVM_EXTERN JSVM_Status OH_JSVM_GetVM(JSVM_Env env,JSVM_VM* result)](#oh_jsvm_getvm) | 检索给定环境的虚拟机实例。 |
55| [JSVM_EXTERN JSVM_Status OH_JSVM_CompileScript(JSVM_Env env,JSVM_Value script,const uint8_t* cachedData,size_t cacheDataLength,bool eagerCompile,bool* cacheRejected,JSVM_Script* result)](#oh_jsvm_compilescript) | 编译一串JavaScript代码,并返回编译后的脚本。 |
56| [JSVM_EXTERN JSVM_Status OH_JSVM_CompileScriptWithOrigin(JSVM_Env env,JSVM_Value script,const uint8_t* cachedData,size_t cacheDataLength,bool eagerCompile,bool* cacheRejected,JSVM_ScriptOrigin* origin,JSVM_Script* result)](#oh_jsvm_compilescriptwithorigin) | 编译一串包含 sourcemap 信息的 JavaScript 代码,并返回编译后的脚本。 |
57| [JSVM_EXTERN JSVM_Status OH_JSVM_CompileScriptWithOptions(JSVM_Env env,JSVM_Value script,size_t optionCount,JSVM_CompileOptions options[],JSVM_Value* result)](#oh_jsvm_compilescriptwithoptions) | 编译一串JavaScript代码,并返回编译后的脚本。 |
58| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateCodeCache(JSVM_Env env,JSVM_Script script,const uint8_t** data,size_t* length)](#oh_jsvm_createcodecache) | 为编译后的脚本创建代码缓存。 |
59| [JSVM_EXTERN JSVM_Status OH_JSVM_RunScript(JSVM_Env env,JSVM_Script script,JSVM_Value* result)](#oh_jsvm_runscript) | 执行一串JavaScript代码并返回其结果,其中包含以下注意事项:与eval不同的是,该函数不允许脚本访问当前词法作用域,因此也不允许访问模块作用域,这意味着require等伪全局变量将不可用。脚本可以访问全局作用域。脚本中的函数和var声明将被添加到全局对象。使用let和const的变量声明将全局可见,但不会被添加到全局对象。this的值在脚本内是global。如果没有 JIT 权限支持,执行含wasm的脚本会失败,在特定场景下存在性能差异,并打印一行日志提示开发者。 |
60| [JSVM_EXTERN JSVM_Status OH_JSVM_SetInstanceData(JSVM_Env env,void* data,JSVM_Finalize finalizeCb,void* finalizeHint)](#oh_jsvm_setinstancedata) | 将data与当前运行的JSVM环境相关联。后续可以使用OH_JSVM_GetInstanceData()检索data。通过先前调用OH_JSVM_SetInstanceData()设置的任何与当前运行的JSVM环境相关联的现有数据都将被覆盖。如果先前提供了finalizeCb,则不会调用它。 |
61| [JSVM_EXTERN JSVM_Status OH_JSVM_GetInstanceData(JSVM_Env env,void** data)](#oh_jsvm_getinstancedata) | 检索通过调用OH_JSVM_SetInstanceData()与当前运行JSVM环境产生关联的数据。如果未设置任何关联数据,该函数调用将成功,且data设置为NULL。 |
62| [JSVM_EXTERN JSVM_Status OH_JSVM_GetLastErrorInfo(JSVM_Env env,const JSVM_ExtendedErrorInfo** result)](#oh_jsvm_getlasterrorinfo) | 检索JSVM_ExtendedErrorInfo结构,其中包含发生的最后一个错误的有关信息。返回的JSVM_ExtendedErrorInfo的内容仅在对同一env调用JSVM-API函数之前有效。这包括对OH_JSVM_IsExceptionPending的调用,因此可能经常需要复制信息以便以后使用。error_message中返回的指针指向一个静态定义的字符串,因此如果你在调用另一个JSVM-API函数之前将它从error_message字段(将被覆盖)中复制出来,则可以安全地使用该指针。 |
63| [JSVM_EXTERN JSVM_Status OH_JSVM_Throw(JSVM_Env env,JSVM_Value error)](#oh_jsvm_throw) | 抛出提供的JavaScript值。 |
64| [JSVM_EXTERN JSVM_Status OH_JSVM_ThrowError(JSVM_Env env,const char* code,const char* msg)](#oh_jsvm_throwerror) | 抛出带有所提供文本的JavaScript Error。 |
65| [JSVM_EXTERN JSVM_Status OH_JSVM_ThrowTypeError(JSVM_Env env,const char* code,const char* msg)](#oh_jsvm_throwtypeerror) | 抛出带有所提供文本的JavaScript TypeError。 |
66| [JSVM_EXTERN JSVM_Status OH_JSVM_ThrowRangeError(JSVM_Env env,const char* code,const char* msg)](#oh_jsvm_throwrangeerror) | 抛出带有所提供文本的JavaScript RangeError。 |
67| [JSVM_EXTERN JSVM_Status OH_JSVM_ThrowSyntaxError(JSVM_Env env,const char* code,const char* msg)](#oh_jsvm_throwsyntaxerror) | 抛出带有所提供文本的JavaScript SyntaxError。 |
68| [JSVM_EXTERN JSVM_Status OH_JSVM_IsError(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_iserror) | 查询JSVM_Value以检查它是否表示错误对象。 |
69| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)](#oh_jsvm_createerror) | 返回带有所提供文本的JavaScript Error。 |
70| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateTypeError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)](#oh_jsvm_createtypeerror) | 返回带有所提供文本的JavaScript TypeError。 |
71| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateRangeError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)](#oh_jsvm_createrangeerror) | 返回带有所提供文本的JavaScript RangeError。 |
72| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateSyntaxError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)](#oh_jsvm_createsyntaxerror) | 返回带有所提供文本的JavaScript SyntaxError。 |
73| [JSVM_EXTERN JSVM_Status OH_JSVM_GetAndClearLastException(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_getandclearlastexception) | 获取并清除上一次异常。如果出现挂起,则返回JavaScript异常,否则返回NULL。 |
74| [JSVM_EXTERN JSVM_Status OH_JSVM_IsExceptionPending(JSVM_Env env,bool* result)](#oh_jsvm_isexceptionpending) | 查询上一次异常是否由挂起导致的。如果由异常导致,则返回true,否则返回false。 |
75| [JSVM_EXTERN JSVM_Status OH_JSVM_OpenHandleScope(JSVM_Env env,JSVM_HandleScope* result)](#oh_jsvm_openhandlescope) | 开辟了一个新的作用域。 |
76| [JSVM_EXTERN JSVM_Status OH_JSVM_CloseHandleScope(JSVM_Env env,JSVM_HandleScope scope)](#oh_jsvm_closehandlescope) | (必须)按照创建作用域的相反顺序关闭传入的作用域。 |
77| [JSVM_EXTERN JSVM_Status OH_JSVM_OpenEscapableHandleScope(JSVM_Env env,JSVM_EscapableHandleScope* result)](#oh_jsvm_openescapablehandlescope) | 打开一个可以将某对象从其中提到外部作用域的新作用域。 |
78| [JSVM_EXTERN JSVM_Status OH_JSVM_CloseEscapableHandleScope(JSVM_Env env,JSVM_EscapableHandleScope scope)](#oh_jsvm_closeescapablehandlescope) | (必须)按照创建作用域的相反顺序关闭传入的作用域。即使存在挂起的JavaScript异常,也可以调用此JSVM_API。 |
79| [JSVM_EXTERN JSVM_Status OH_JSVM_EscapeHandle(JSVM_Env env,JSVM_EscapableHandleScope scope,JSVM_Value escapee,JSVM_Value* result)](#oh_jsvm_escapehandle) | 提升JavaScript对象的句柄,使其在外部作用域的生命周期内有效。每个作用域只能调用一次。如果多次调用,将返回错误。 |
80| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateReference(JSVM_Env env,JSVM_Value value,uint32_t initialRefcount,JSVM_Ref* result)](#oh_jsvm_createreference) | 对传入的值创建一个具有指定引用计数的新引用。 |
81| [JSVM_EXTERN JSVM_Status OH_JSVM_DeleteReference(JSVM_Env env,JSVM_Ref ref)](#oh_jsvm_deletereference) | 删除传入的引用。 |
82| [JSVM_EXTERN JSVM_Status OH_JSVM_ReferenceRef(JSVM_Env env,JSVM_Ref ref,uint32_t* result)](#oh_jsvm_referenceref) | 增加传入引用的引用计数并返回生成的引用计数。 |
83| [JSVM_EXTERN JSVM_Status OH_JSVM_ReferenceUnref(JSVM_Env env,JSVM_Ref ref,uint32_t* result)](#oh_jsvm_referenceunref) | 递减传入引用的引用计数并返回生成的引用计数。 |
84| [JSVM_EXTERN JSVM_Status OH_JSVM_GetReferenceValue(JSVM_Env env,JSVM_Ref ref,JSVM_Value* result)](#oh_jsvm_getreferencevalue) | 如果仍然有效,此JSVM-API将返回JSVM_Value,表示与JSVM_Ref关联的JavaScript值。否则,结果将为NULL。 |
85| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateArray(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_createarray) | 返回对应于JavaScript Array类型的JSVM-API值。 |
86| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateArrayWithLength(JSVM_Env env,size_t length,JSVM_Value* result)](#oh_jsvm_createarraywithlength) | 返回对应于JavaScript Array类型的JSVM-API值。Array的长度属性设置为传入的长度参数。但是,不保证底层缓冲区在创建数组时由VM预先分配。该行为留给底层VM实现。 |
87| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateArraybuffer(JSVM_Env env,size_t byteLength,void** data,JSVM_Value* result)](#oh_jsvm_createarraybuffer) | 返回JavaScript ArrayBuffer类型对应的JSVM-API值。ArrayBuffer用于表示固定长度的二进制数据缓冲区。通常用作TypedArray对象的后备缓冲区。分配的ArrayBuffer有一个底层字节缓冲区,其大小由传入的length参数决定。底层缓冲区可选择返回给调用方,调用方可直接操作该缓冲区。此缓冲区只能直接从native代码写入。如果想从JavaScript写入该缓冲区,需创建TypedArray或DataView对象。 |
88| [JSVM_Status JSVM_CDECL OH_JSVM_AllocateArrayBufferBackingStoreData(size_t byteLength,JSVM_InitializedFlag initialized,void **data)](#oh_jsvm_allocatearraybufferbackingstoredata) | 申请一段 BackingStore 内存给 array buffer 使用。 |
89| [JSVM_Status JSVM_CDECL OH_JSVM_FreeArrayBufferBackingStoreData(void *data)](#oh_jsvm_freearraybufferbackingstoredata) | 释放由 OH_JSVM_AllocateArrayBufferBackingStoreData 申请的 BackingStore 内存。 |
90| [JSVM_Status JSVM_CDECL OH_JSVM_CreateArrayBufferFromBackingStoreData(JSVM_Env env,void *data,size_t backingStoreSize,size_t offset,size_t arrayBufferSize,JSVM_Value *result)](#oh_jsvm_createarraybufferfrombackingstoredata) | 在申请得到的 BackingStore 内存上创建 array buffer。 |
91| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateDate(JSVM_Env env,double time,JSVM_Value* result)](#oh_jsvm_createdate) | 分配一个JavaScript Date对象。此API不处理闰秒。这是因为ECMAScript遵循POSIX时间规范,对闰秒进行忽略。 |
92| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateExternal(JSVM_Env env,void* data,JSVM_Finalize finalizeCb,void* finalizeHint,JSVM_Value* result)](#oh_jsvm_createexternal) | 分配一个带有外部数据的JavaScript值。这用于通过JavaScript代码传递外部数据。后续可以使用OH_JSVM_GetValueExternal由native代码检索。该API添加了一个JSVM_Finalize回调,当刚刚创建的JavaScript对象被垃圾回收时将调用该回调。创建的值不是一个对象,因此不支持附加属性。它被认为是一个独特的值类型:使用外部值调用OH_JSVM_Typeof()会生成JSVM_EXTERNAL。 |
93| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateObject(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_createobject) | 分配一个默认的JavaScript对象。该函数功能等同于在JavaScript中执行new Object()。 |
94| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateSymbol(JSVM_Env env,JSVM_Value description,JSVM_Value* result)](#oh_jsvm_createsymbol) | 用UTF8编码的C字符串创建JavaScript symbol值。 |
95| [JSVM_EXTERN JSVM_Status OH_JSVM_SymbolFor(JSVM_Env env,const char* utf8description,size_t length,JSVM_Value* result)](#oh_jsvm_symbolfor) | 在全局注册表中搜索具有给定描述的现有符号。如果该符号已经存在,它将被返回,否则将在注册表中创建一个新符号。 |
96| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateTypedarray(JSVM_Env env,JSVM_TypedarrayType type,size_t length,JSVM_Value arraybuffer,size_t byteOffset,JSVM_Value* result)](#oh_jsvm_createtypedarray) | 基于已有的ArrayBuffer对象,创建一个JavaScript TypedArray对象。TypedArray对象在底层数据缓冲区上提供了一个类似数组的视图,其中每个元素都具有相同的底层二进制标量数据类型。要求:length * 元素标量byte值 + byteOffset 不大于传入数组的ByteLength(),否则抛出范围错误(RangeError)。 |
97| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateDataview(JSVM_Env env,size_t length,JSVM_Value arraybuffer,size_t byteOffset,JSVM_Value* result)](#oh_jsvm_createdataview) | 基于已有的ArrayBuffer对象,创建一个JavaScript DataView对象。DataView对象在底层数据缓冲区上提供了一个类似数组的视图,其中的元素可以具有不同的大小和类型。要求:二进制的length + byteOffset不大于传入数组的大小(byte数)。否则,抛出范围错误(RangeError)。 |
98| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateInt32(JSVM_Env env,int32_t value,JSVM_Value* result)](#oh_jsvm_createint32) | 将一个C int32_t类型值转换为JavaScript number类型值。 |
99| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateUint32(JSVM_Env env,uint32_t value,JSVM_Value* result)](#oh_jsvm_createuint32) | 将一个C uint32_t类型值转换为JavaScript number类型值。 |
100| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateInt64(JSVM_Env env,int64_t value,JSVM_Value* result)](#oh_jsvm_createint64) | 将一个C int64_t类型值转换为JavaScript number类型值。 |
101| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateDouble(JSVM_Env env,double value,JSVM_Value* result)](#oh_jsvm_createdouble) | 将一个C double类型值转换为JavaScript number类型值。 |
102| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateBigintInt64(JSVM_Env env,int64_t value,JSVM_Value* result)](#oh_jsvm_createbigintint64) | 将一个C int64_t类型值转换为JavaScript BigInt类型值。 |
103| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateBigintUint64(JSVM_Env env,uint64_t value,JSVM_Value* result)](#oh_jsvm_createbigintuint64) | 将一个C uint64_t类型值转换为JavaScript BigInt类型值。 |
104| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateBigintWords(JSVM_Env env,int signBit,size_t wordCount,const uint64_t* words,JSVM_Value* result)](#oh_jsvm_createbigintwords) | 将一组64位无符号比特位转换为单个BigInt值。 |
105| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateStringLatin1(JSVM_Env env,const char* str,size_t length,JSVM_Value* result)](#oh_jsvm_createstringlatin1) | 将ISO-8859-1编码的C字符串转换为JavaScript字符串值。复制原生字符串。 |
106| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateStringUtf16(JSVM_Env env,const char16_t* str,size_t length,JSVM_Value* result)](#oh_jsvm_createstringutf16) | 将UTF16-LE编码的C字符串转换为JavaScript字符串值。复制原生字符串。 |
107| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateStringUtf8(JSVM_Env env,const char* str,size_t length,JSVM_Value* result)](#oh_jsvm_createstringutf8) | 用UTF8编码的C字符串创建JavaScript字符串值。复制原生字符串。 |
108| [JSVM_EXTERN JSVM_Status OH_JSVM_GetArrayLength(JSVM_Env env,JSVM_Value value,uint32_t* result)](#oh_jsvm_getarraylength) | 返回数组的长度。 |
109| [JSVM_EXTERN JSVM_Status OH_JSVM_GetArraybufferInfo(JSVM_Env env,JSVM_Value arraybuffer,void** data,size_t* byteLength)](#oh_jsvm_getarraybufferinfo) | 用于检索ArrayBuffer的底层数据缓冲区及其长度。 |
110| [JSVM_EXTERN JSVM_Status OH_JSVM_GetPrototype(JSVM_Env env,JSVM_Value object,JSVM_Value* result)](#oh_jsvm_getprototype) | 返回对象的原型。 |
111| [JSVM_EXTERN JSVM_Status OH_JSVM_GetTypedarrayInfo(JSVM_Env env,JSVM_Value typedarray,JSVM_TypedarrayType* type,size_t* length,void** data,JSVM_Value* arraybuffer,size_t* byteOffset)](#oh_jsvm_gettypedarrayinfo) | 返回类型化数组的各种属性。如果不需要该属性,则任何输出参数都可以是 NULL。 |
112| [JSVM_EXTERN JSVM_Status OH_JSVM_GetDataviewInfo(JSVM_Env env,JSVM_Value dataview,size_t* bytelength,void** data,JSVM_Value* arraybuffer,size_t* byteOffset)](#oh_jsvm_getdataviewinfo) | 返回DataView的各种属性。如果不需要某一属性,则任何出参都可以设置为NULL。 |
113| [JSVM_EXTERN JSVM_Status OH_JSVM_GetDateValue(JSVM_Env env,JSVM_Value value,double* result)](#oh_jsvm_getdatevalue) | 返回与给定的JavaScript Date时间值等价的C双精度基础类型值。如果调用成功,返回JSVM_OK。如果传入一个非JavaScript Date类型的JSVM_Value,返回JSVM_DATA_EXPECTED。 |
114| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBool(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_getvaluebool) | 返回与给定的JavaScript Boolean等价的C布尔基础类型值。 |
115| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueDouble(JSVM_Env env,JSVM_Value value,double* result)](#oh_jsvm_getvaluedouble) | 返回与给定的JavaScript number等价的C双精度基础类型值。 |
116| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBigintInt64(JSVM_Env env,JSVM_Value value,int64_t* result,bool* lossless)](#oh_jsvm_getvaluebigintint64) | 返回与给定的JavaScript BigInt等价的C int64_t基础类型值。如果需要,它将截断该值,将lossless设置为false。 |
117| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBigintUint64(JSVM_Env env,JSVM_Value value,uint64_t* result,bool* lossless)](#oh_jsvm_getvaluebigintuint64) | 返回与给定的JavaScript BigInt等价的C uint64_t基础类型值。如果需要,它将截断该值,将lossless设置为false。 |
118| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBigintWords(JSVM_Env env,JSVM_Value value,int* signBit,size_t* wordCount,uint64_t* words)](#oh_jsvm_getvaluebigintwords) | 将单个BigInt值转换为符号位、64位小端数组和数组中的元素数。signBit和words参数可以都设置为NULL。这种情况下,只获取wordCount。 |
119| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueExternal(JSVM_Env env,JSVM_Value value,void** result)](#oh_jsvm_getvalueexternal) | 检索之前传递给OH_JSVM_CreateExternal()的外部数据指针。 |
120| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueInt32(JSVM_Env env,JSVM_Value value,int32_t* result)](#oh_jsvm_getvalueint32) | 返回与给定的JavaScript number等价的C int32基础类型值。 |
121| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueInt64(JSVM_Env env,JSVM_Value value,int64_t* result)](#oh_jsvm_getvalueint64) | 返回与给定的JavaScript number等价的C int64基础类型值。 |
122| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueStringLatin1(JSVM_Env env,JSVM_Value value,char* buf,size_t bufsize,size_t* result)](#oh_jsvm_getvaluestringlatin1) | 返回与传入值对应的ISO-8859-1编码字符串。 |
123| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueStringUtf8(JSVM_Env env,JSVM_Value value,char* buf,size_t bufsize,size_t* result)](#oh_jsvm_getvaluestringutf8) | 返回与传入值对应的UTF8编码字符串。 |
124| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueStringUtf16(JSVM_Env env,JSVM_Value value,char16_t* buf,size_t bufsize,size_t* result)](#oh_jsvm_getvaluestringutf16) | 查询与传入值对应的UTF16编码字符串。 |
125| [JSVM_EXTERN JSVM_Status OH_JSVM_GetValueUint32(JSVM_Env env,JSVM_Value value,uint32_t* result)](#oh_jsvm_getvalueuint32) | 返回与给定的JavaScript number等价的C uint_32基础类型值。 |
126| [JSVM_EXTERN JSVM_Status OH_JSVM_GetBoolean(JSVM_Env env,bool value,JSVM_Value* result)](#oh_jsvm_getboolean) | 返回表示给定布尔值的JavaScript单例对象。 |
127| [JSVM_EXTERN JSVM_Status OH_JSVM_GetGlobal(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_getglobal) | 返回global对象。 |
128| [JSVM_EXTERN JSVM_Status OH_JSVM_GetNull(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_getnull) | 返回null对象。 |
129| [JSVM_EXTERN JSVM_Status OH_JSVM_GetUndefined(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_getundefined) | 返回Undefined对象。 |
130| [JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToBool(JSVM_Env env,JSVM_Value value,JSVM_Value* result)](#oh_jsvm_coercetobool) | 实现抽象操作ToBoolean()。 |
131| [JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToNumber(JSVM_Env env,JSVM_Value value,JSVM_Value* result)](#oh_jsvm_coercetonumber) | 实现抽象操作ToNumber()。如果传入的值是对象,则函数可能会运行JavaScript代码。 |
132| [JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToObject(JSVM_Env env,JSVM_Value value,JSVM_Value* result)](#oh_jsvm_coercetoobject) | 实现抽象操作ToObject()。 |
133| [JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToString(JSVM_Env env,JSVM_Value value,JSVM_Value* result)](#oh_jsvm_coercetostring) | 实现抽象操作ToString()。如果传入的值是对象,则函数可能会运行JavaScript代码。 |
134| [JSVM_EXTERN JSVM_Status OH_JSVM_Typeof(JSVM_Env env,JSVM_Value value,JSVM_ValueType* result)](#oh_jsvm_typeof) | 提供类似于在定义的对象上调用typeof运算符的行为。不同点在于,该函数支持检测外部值;它将null检测为单独的类型,而ECMAScript typeof将用于检测object。如果value的类型无效,则返回错误。 |
135| [JSVM_EXTERN JSVM_Status OH_JSVM_Instanceof(JSVM_Env env,JSVM_Value object,JSVM_Value constructor,bool* result)](#oh_jsvm_instanceof) | 提供类似于在对象上调用instanceof运算符的行为。 |
136| [JSVM_EXTERN JSVM_Status OH_JSVM_IsArray(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isarray) | 提供类似于在对象上调用IsArray的行为。 |
137| [JSVM_EXTERN JSVM_Status OH_JSVM_IsArraybuffer(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isarraybuffer) | 检查传入的对象是否为ArrayBuffer。 |
138| [JSVM_EXTERN JSVM_Status OH_JSVM_IsDate(JSVM_Env env,JSVM_Value value,bool* isDate)](#oh_jsvm_isdate) | 检查传入的Object是否为日期。 |
139| [JSVM_EXTERN JSVM_Status OH_JSVM_IsTypedarray(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_istypedarray) | 检查传入的Object是否为类型化数组。 |
140| [JSVM_EXTERN JSVM_Status OH_JSVM_IsDataview(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isdataview) | 检查传入的对象是否是DataView。 |
141| [JSVM_EXTERN JSVM_Status OH_JSVM_StrictEquals(JSVM_Env env,JSVM_Value lhs,JSVM_Value rhs,bool* result)](#oh_jsvm_strictequals) | 提供类似调用严格相等算法的行为。 |
142| [JSVM_EXTERN JSVM_Status OH_JSVM_Equals(JSVM_Env env,JSVM_Value lhs,JSVM_Value rhs,bool* result)](#oh_jsvm_equals) | 提供类似调用宽松相等算法的行为。无论JavaScript值类型如何,只要值相等,就返回true。 |
143| [JSVM_EXTERN JSVM_Status OH_JSVM_DetachArraybuffer(JSVM_Env env,JSVM_Value arraybuffer)](#oh_jsvm_detacharraybuffer) | 提供类似于调用ArrayBuffer detach操作的行为。 |
144| [JSVM_EXTERN JSVM_Status OH_JSVM_IsDetachedArraybuffer(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isdetachedarraybuffer) | 提供类似调用ArrayBuffer IsDetachedBuffer操作的行为。 |
145| [JSVM_EXTERN JSVM_Status OH_JSVM_GetPropertyNames(JSVM_Env env,JSVM_Value object,JSVM_Value* result)](#oh_jsvm_getpropertynames) | 以字符数数组的形式返回object的可枚举属性的名称。key为符号的object的属性将不会被包含在内。 |
146| [JSVM_EXTERN JSVM_Status OH_JSVM_GetAllPropertyNames(JSVM_Env env,JSVM_Value object,JSVM_KeyCollectionMode keyMode,JSVM_KeyFilter keyFilter,JSVM_KeyConversion keyConversion,JSVM_Value* result)](#oh_jsvm_getallpropertynames) | 返回包含object所有可用属性名称的数组。 |
147| [JSVM_EXTERN JSVM_Status OH_JSVM_SetProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,JSVM_Value value)](#oh_jsvm_setproperty) | 为传入的object设置名为key的属性。 |
148| [JSVM_EXTERN JSVM_Status OH_JSVM_GetProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,JSVM_Value* result)](#oh_jsvm_getproperty) | 从传入的object中获取名为key的属性。 |
149| [JSVM_EXTERN JSVM_Status OH_JSVM_HasProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,bool* result)](#oh_jsvm_hasproperty) | 检查传入的Object是否具有命名为key的属性。 |
150| [JSVM_EXTERN JSVM_Status OH_JSVM_DeleteProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,bool* result)](#oh_jsvm_deleteproperty) | 尝试从object中删除名为key的属性。 |
151| [JSVM_EXTERN JSVM_Status OH_JSVM_HasOwnProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,bool* result)](#oh_jsvm_hasownproperty) | 检查传入的Object是否具有名为key的属性。key必须是string或symbol,否则将抛出错误。JSVM-API不会执行任何数据类型之间的转换。 |
152| [JSVM_EXTERN JSVM_Status OH_JSVM_SetNamedProperty(JSVM_Env env,JSVM_Value object,const char* utf8name,JSVM_Value value)](#oh_jsvm_setnamedproperty) | 此方法等效于object调用OH_JSVM_SetProperty设置名为`utf8Name`的属性。 |
153| [JSVM_EXTERN JSVM_Status OH_JSVM_GetNamedProperty(JSVM_Env env,JSVM_Value object,const char* utf8name,JSVM_Value* result)](#oh_jsvm_getnamedproperty) | 此方法等效于object调用OH_JSVM_GetProperty获取名为`utf8Name`的属性对象。 |
154| [JSVM_EXTERN JSVM_Status OH_JSVM_HasNamedProperty(JSVM_Env env,JSVM_Value object,const char* utf8name,bool* result)](#oh_jsvm_hasnamedproperty) | 此方法等效于object对象调用OH_JSVM_HasProperty查询其内部是否存在名为`utf8Name`的属性。 |
155| [JSVM_EXTERN JSVM_Status OH_JSVM_SetElement(JSVM_Env env,JSVM_Value object,uint32_t index,JSVM_Value value)](#oh_jsvm_setelement) | 在传入的Object上设置一个元素。 |
156| [JSVM_EXTERN JSVM_Status OH_JSVM_GetElement(JSVM_Env env,JSVM_Value object,uint32_t index,JSVM_Value* result)](#oh_jsvm_getelement) | 获取请求索引处的元素。 |
157| [JSVM_EXTERN JSVM_Status OH_JSVM_HasElement(JSVM_Env env,JSVM_Value object,uint32_t index,bool* result)](#oh_jsvm_haselement) | 如果传入的Object在指定的索引处有一个元素,则此JSVM-API返回true。 |
158| [JSVM_EXTERN JSVM_Status OH_JSVM_DeleteElement(JSVM_Env env,JSVM_Value object,uint32_t index,bool* result)](#oh_jsvm_deleteelement) | 尝试从object中删除指定index处的元素。 |
159| [JSVM_EXTERN JSVM_Status OH_JSVM_DefineProperties(JSVM_Env env,JSVM_Value object,size_t propertyCount,const JSVM_PropertyDescriptor* properties)](#oh_jsvm_defineproperties) | 通过此方法可以在给定对象上高效定义多个属性,这些属性使用属性描述符进行定义。通过一个属性描述符的数组,此API将为对象依次设置数组中的属性。 |
160| [JSVM_EXTERN JSVM_Status OH_JSVM_ObjectFreeze(JSVM_Env env,JSVM_Value object)](#oh_jsvm_objectfreeze) | 冻结指定的对象,防止为其添加新的属性、删除现有属性、更改现有属性的可枚举性/可配置性/可写性、更改现有属性的值、改变对象原型等操作。 |
161| [JSVM_EXTERN JSVM_Status OH_JSVM_ObjectSeal(JSVM_Env env,JSVM_Value object)](#oh_jsvm_objectseal) | 封装指定的对象,防止为其添加新的属性并将所有现有属性标记为不可配置。 |
162| [JSVM_EXTERN JSVM_Status OH_JSVM_CallFunction(JSVM_Env env,JSVM_Value recv,JSVM_Value func,size_t argc,const JSVM_Value* argv,JSVM_Value* result)](#oh_jsvm_callfunction) | 支持从native代码调用JavaScript函数对象,这是从native代码回调到JavaScript的主要机制。 |
163| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateFunction(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback cb,JSVM_Value* result)](#oh_jsvm_createfunction) | 支持在native代码中创建函数对象,这是从JavaScript调用native代码的主要机制。在此调用之后,新创建的函数在脚本中不再自动可见。相反,必须在JavaScript可见的任何对象上显示设置属性,才能从脚本访问该函数。 |
164| [JSVM_EXTERN JSVM_Status OH_JSVM_GetCbInfo(JSVM_Env env,JSVM_CallbackInfo cbinfo,size_t* argc,JSVM_Value* argv,JSVM_Value* thisArg,void** data)](#oh_jsvm_getcbinfo) | 此方法在回调函数中用于检索有关调用的详细信息,例如来自给定回调信息的参数和this指针。 |
165| [JSVM_EXTERN JSVM_Status OH_JSVM_GetNewTarget(JSVM_Env env,JSVM_CallbackInfo cbinfo,JSVM_Value* result)](#oh_jsvm_getnewtarget) | 返回构造函数调用的new target。如果当前回调不是构造函数调用,结果为NULL。 |
166| [JSVM_EXTERN JSVM_Status OH_JSVM_NewInstance(JSVM_Env env,JSVM_Value constructor,size_t argc,const JSVM_Value* argv,JSVM_Value* result)](#oh_jsvm_newinstance) | 使用给定的JSVM_Value表示的构造函数来实例化新的JavaScript值。 |
167| [JSVM_EXTERN JSVM_Status OH_JSVM_DefineClass(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback constructor,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_Value* result)](#oh_jsvm_defineclass) | 定义一个JavaScript类。 |
168| [JSVM_EXTERN JSVM_Status OH_JSVM_Wrap(JSVM_Env env,JSVM_Value jsObject,void* nativeObject,JSVM_Finalize finalizeCb,void* finalizeHint,JSVM_Ref* result)](#oh_jsvm_wrap) | 在JavaScript对象中封装native实例,该实例后续可以通过OH_JSVM_Unwrap()进行检索。 |
169| [JSVM_EXTERN JSVM_Status OH_JSVM_Unwrap(JSVM_Env env,JSVM_Value jsObject,void** result)](#oh_jsvm_unwrap) | 当JavaScript代码调用类的方法或属性访问器时,对应的JSVM_Callback将被调用。如果回调是针对实例方法或访问器的,则回调的this参数是封装器对象;然后可以通过调用封装器对象的OH_JSVM_Unwrap()获得作为调用目标的C++实例。 |
170| [JSVM_EXTERN JSVM_Status OH_JSVM_RemoveWrap(JSVM_Env env,JSVM_Value jsObject,void** result)](#oh_jsvm_removewrap) | 使用OH_JSVM_Wrap()检索先前封装在JavaScript对象——js_object中的native实例并移除封装。如果finalize回调与封装相关联,则当JavaScript对象被垃圾回收时将不再调用它。 |
171| [JSVM_EXTERN JSVM_Status OH_JSVM_TypeTagObject(JSVM_Env env,JSVM_Value value,const JSVM_TypeTag* typeTag)](#oh_jsvm_typetagobject) | 将typeTag指针的值与JavaScript对象或外部值相关联。可调用OH_JSVM_CheckObjectTypeTag()判断附加在对象上的标记类型,以确保对象的类型正确。如果对象已经有关联的类型标记,则返回JSVM_INVALID_ARG。 |
172| [JSVM_EXTERN JSVM_Status OH_JSVM_CheckObjectTypeTag(JSVM_Env env,JSVM_Value value,const JSVM_TypeTag* typeTag,bool* result)](#oh_jsvm_checkobjecttypetag) | 将类型标签typeTag与JavaScript对象或外部值上的标签作对比。如果找到相同标签,设置result为true,否则为false。 |
173| [JSVM_EXTERN JSVM_Status OH_JSVM_AddFinalizer(JSVM_Env env,JSVM_Value jsObject,void* finalizeData,JSVM_Finalize finalizeCb,void* finalizeHint,JSVM_Ref* result)](#oh_jsvm_addfinalizer) | 为JavaScript对象添加JSVM_Finalize回调,当JavaScript对象被垃圾回收时调用该回调函数。可以在单个JavaScript对象上多次调用OH_JSVM_AddFinalizer。 |
174| [JSVM_EXTERN JSVM_Status OH_JSVM_GetVersion(JSVM_Env env,uint32_t* result)](#oh_jsvm_getversion) | 返回JSVM运行时支持的最高JSVM-API版本。后续将新增JSVM-API,以便支持更多的功能。引入该API的目的:在支持某功能的JSVM版本,可以使用新的功能;在不支持某功能的JSVM版本,可以提供回调行为。 |
175| [JSVM_EXTERN JSVM_Status OH_JSVM_GetVMInfo(JSVM_VMInfo* result)](#oh_jsvm_getvminfo) | 返回虚拟机的信息。 |
176| [JSVM_EXTERN JSVM_Status OH_JSVM_AdjustExternalMemory(JSVM_Env env,int64_t changeInBytes,int64_t* result)](#oh_jsvm_adjustexternalmemory) | 此函数将因JavaScript对象而保持活跃的外部分配的内存大小通知给底层虚拟机。注册外部分配的内存将比其他方式更频繁地触发全局垃圾回收。 |
177| [JSVM_EXTERN JSVM_Status OH_JSVM_MemoryPressureNotification(JSVM_Env env,JSVM_MemoryPressureLevel level)](#oh_jsvm_memorypressurenotification) | 通知虚拟机系统内存不足并有选择地触发垃圾回收。 |
178| [JSVM_EXTERN JSVM_Status OH_JSVM_CreatePromise(JSVM_Env env,JSVM_Deferred* deferred,JSVM_Value* promise)](#oh_jsvm_createpromise) | 创建一个延迟对象和一个JavaScript promise。 |
179| [JSVM_EXTERN JSVM_Status OH_JSVM_ResolveDeferred(JSVM_Env env,JSVM_Deferred deferred,JSVM_Value resolution)](#oh_jsvm_resolvedeferred) | 通过与之关联的延迟对象来解析JavaScript promise。它只能用于解析对应的可用的延迟对象的JavaScript Promise。这意味着Promise必须使用OH_JSVM_CreatePromise()创建,并且从该调用返回的对象必须保留,才能将其传递给此API。 |
180| [JSVM_EXTERN JSVM_Status OH_JSVM_RejectDeferred(JSVM_Env env,JSVM_Deferred deferred,JSVM_Value rejection)](#oh_jsvm_rejectdeferred) | 通过与之关联的延迟对象来拒绝JavaScript Promise。它只能用于拒绝对应的可用延迟对象的JavaScript Promise。这意味着Promise必须使用OH_JSVM_CreatePromise()创建,并且从该调用返回的对象必须保留,才能将其传递给此API。 |
181| [JSVM_EXTERN JSVM_Status OH_JSVM_IsPromise(JSVM_Env env,JSVM_Value value,bool* isPromise)](#oh_jsvm_ispromise) | 查询Promise是否为原生Promise对象。 |
182| [JSVM_EXTERN JSVM_Status OH_JSVM_PromiseRegisterHandler(JSVM_Env env,JSVM_Value promise,JSVM_Value onFulfilled,JSVM_Value onRejected,JSVM_Value* result)](#oh_jsvm_promiseregisterhandler) | 注册 处理Promise兑现/拒绝的 回调函数。 |
183| [JSVM_EXTERN JSVM_Status OH_JSVM_JsonParse(JSVM_Env env,JSVM_Value jsonString,JSVM_Value* result)](#oh_jsvm_jsonparse) | 解析JSON字符串,并返回成功解析的值。 |
184| [JSVM_EXTERN JSVM_Status OH_JSVM_JsonStringify(JSVM_Env env,JSVM_Value jsonObject,JSVM_Value* result)](#oh_jsvm_jsonstringify) | 将对象字符串化,并返回成功转换后的字符串。 |
185| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateSnapshot(JSVM_VM vm,size_t contextCount,const JSVM_Env* contexts,const char** blobData,size_t* blobSize)](#oh_jsvm_createsnapshot) | 创建虚拟机的启动快照。 |
186| [JSVM_EXTERN JSVM_Status OH_JSVM_GetHeapStatistics(JSVM_VM vm,JSVM_HeapStatistics* result)](#oh_jsvm_getheapstatistics) | 返回一组虚拟机堆的统计数据。 |
187| [JSVM_EXTERN JSVM_Status OH_JSVM_StartCpuProfiler(JSVM_VM vm,JSVM_CpuProfiler* result)](#oh_jsvm_startcpuprofiler) | 创建并启动一个CPU profiler。 |
188| [JSVM_EXTERN JSVM_Status OH_JSVM_StopCpuProfiler(JSVM_VM vm,JSVM_CpuProfiler profiler,JSVM_OutputStream stream,void* streamData)](#oh_jsvm_stopcpuprofiler) | 停止CPU profiler并将结果输出到流。 |
189| [JSVM_EXTERN JSVM_Status OH_JSVM_TakeHeapSnapshot(JSVM_VM vm,JSVM_OutputStream stream,void* streamData)](#oh_jsvm_takeheapsnapshot) | 获取当前堆快照并将其输出到流。 |
190| [JSVM_EXTERN JSVM_Status OH_JSVM_OpenInspector(JSVM_Env env,const char* host,uint16_t port)](#oh_jsvm_openinspector) | 在指定的主机和端口上激活inspector,将用来调试JS代码。 |
191| [JSVM_EXTERN JSVM_Status OH_JSVM_CloseInspector(JSVM_Env env)](#oh_jsvm_closeinspector) | 尝试关闭剩余的所有inspector连接。 |
192| [JSVM_EXTERN JSVM_Status OH_JSVM_WaitForDebugger(JSVM_Env env,bool breakNextLine)](#oh_jsvm_waitfordebugger) | 等待主机与inspector建立socket连接,连接建立后程序将继续运行。发送Runtime.runIfWaitingForDebugger命令。 |
193| [JSVM_EXTERN JSVM_Status OH_JSVM_DefineClassWithPropertyHandler(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback constructor,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_PropertyHandlerCfg propertyHandlerCfg,JSVM_Callback callAsFunctionCallback,JSVM_Value* result)](#oh_jsvm_defineclasswithpropertyhandler) | 定义一个具有给定类名、构造函数、属性和回调处理程序的JavaScript类,属性操作包括getter、setter、deleter、enumerator等,并作为函数回调进行调用。 |
194| [JSVM_EXTERN JSVM_Status OH_JSVM_IsUndefined(JSVM_Env env,JSVM_Value value,bool* isUndefined)](#oh_jsvm_isundefined) | 此API检查传入的值是否为Undefined。这相当于JS中的`value === undefined`。 |
195| [JSVM_EXTERN JSVM_Status OH_JSVM_IsNull(JSVM_Env env,JSVM_Value value,bool* isNull)](#oh_jsvm_isnull) | 此API检查传入的值是否为Null对象。这相当于JS中的`value === null`。 |
196| [JSVM_EXTERN JSVM_Status OH_JSVM_IsNullOrUndefined(JSVM_Env env,JSVM_Value value,bool* isNullOrUndefined)](#oh_jsvm_isnullorundefined) | 此API检查传入的值是否为Null或Undefined。这相当于JS中的`value == null`。 |
197| [JSVM_EXTERN JSVM_Status OH_JSVM_IsBoolean(JSVM_Env env,JSVM_Value value,bool* isBoolean)](#oh_jsvm_isboolean) | 此API检查传入的值是否为Boolean。这相当于JS中的`typeof value === 'boolean'`。 |
198| [JSVM_EXTERN JSVM_Status OH_JSVM_IsNumber(JSVM_Env env,JSVM_Value value,bool* isNumber)](#oh_jsvm_isnumber) | 此API检查传入的值是否为Number。这相当于JS中的`typeof value === 'number'`。 |
199| [JSVM_EXTERN JSVM_Status OH_JSVM_IsString(JSVM_Env env,JSVM_Value value,bool* isString)](#oh_jsvm_isstring) | 此API检查传入的值是否为String。这相当于JS中的`typeof value === 'string'`。 |
200| [JSVM_EXTERN JSVM_Status OH_JSVM_IsSymbol(JSVM_Env env,JSVM_Value value,bool* isSymbol)](#oh_jsvm_issymbol) | 此API检查传入的值是否为Symbol。这相当于JS中的`typeof value === 'symbol'`。 |
201| [JSVM_EXTERN JSVM_Status OH_JSVM_IsFunction(JSVM_Env env,JSVM_Value value,bool* isFunction)](#oh_jsvm_isfunction) | 此API检查传入的值是否为Function。这相当于JS中的`typeof value === 'function'`。 |
202| [JSVM_EXTERN JSVM_Status OH_JSVM_IsObject(JSVM_Env env,JSVM_Value value,bool* isObject)](#oh_jsvm_isobject) | 此API检查传入的值是否为Object。 |
203| [JSVM_EXTERN JSVM_Status OH_JSVM_IsBigInt(JSVM_Env env,JSVM_Value value,bool* isBigInt)](#oh_jsvm_isbigint) | 此API检查传入的值是否为BigInt。这相当于JS中的`typeof value === 'bigint'`。 |
204| [JSVM_Status JSVM_CDECL OH_JSVM_CreateMap(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_createmap) | 此API返回与JavaScript Map类型对应的JavaScript值。 |
205| [JSVM_Status JSVM_CDECL OH_JSVM_IsMap(JSVM_Env env,JSVM_Value value,bool* isMap)](#oh_jsvm_ismap) | 此API检查传入的值是否为Map。 |
206| [JSVM_Status JSVM_CDECL OH_JSVM_IsConstructor(JSVM_Env env,JSVM_Value value,bool* isConstructor)](#oh_jsvm_isconstructor) | 此API检查传入的值是否为构造函数。 |
207| [JSVM_Status JSVM_CDECL OH_JSVM_CreateRegExp(JSVM_Env env,JSVM_Value value,JSVM_RegExpFlags flags,JSVM_Value* result)](#oh_jsvm_createregexp) | 此API返回与输入的JavaScript字符串对应的正则表达式对象。接口可能会抛出异常。 |
208| [JSVM_EXTERN JSVM_Status OH_JSVM_ObjectGetPrototypeOf(JSVM_Env env,JSVM_Value object,JSVM_Value* result)](#oh_jsvm_objectgetprototypeof) | 获取JavaScript object的原型。 |
209| [JSVM_EXTERN JSVM_Status OH_JSVM_ObjectSetPrototypeOf(JSVM_Env env,JSVM_Value object,JSVM_Value prototype)](#oh_jsvm_objectsetprototypeof) | 设置给定的JavaScript object的原型。 |
210| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateSet(JSVM_Env env,JSVM_Value* result)](#oh_jsvm_createset) | 创建JavaScript Set对象。 |
211| [JSVM_EXTERN JSVM_Status OH_JSVM_IsSet(JSVM_Env env,JSVM_Value value,bool* isSet)](#oh_jsvm_isset) | 判断给定的对象是否是Set类型。 |
212| [JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToBigInt(JSVM_Env env,JSVM_Value value,JSVM_Value* result)](#oh_jsvm_coercetobigint) | 实现抽象操作`ToBigInt()`。 |
213| [JSVM_EXTERN JSVM_Status OH_JSVM_IsRegExp(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isregexp) | 此API检查传入的值是否为JavaScript RegExp对象。 |
214| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateFunctionWithScript(JSVM_Env env,const char* funcName,size_t length,size_t argc,const JSVM_Value* argv,JSVM_Value script,JSVM_Value* result)](#oh_jsvm_createfunctionwithscript) | 创建一个以给定JavaScript为函数体的函数。 |
215| [JSVM_EXTERN JSVM_Status OH_JSVM_PumpMessageLoop(JSVM_VM vm,bool* result)](#oh_jsvm_pumpmessageloop) | 启动虚拟机内任务队列,这个任务队列可以通过外部事件循环执行。 |
216| [JSVM_EXTERN JSVM_Status OH_JSVM_PerformMicrotaskCheckpoint(JSVM_VM vm)](#oh_jsvm_performmicrotaskcheckpoint) | 检查队列中是否有微任务等待,如果存在则执行它们。 |
217| [JSVM_EXTERN JSVM_Status OH_JSVM_RetainScript(JSVM_Env env, JSVM_Script script)](#oh_jsvm_retainscript) | 持久保存一个JSVM_Script并将其生命周期延长到当前作用域之外。 |
218| [JSVM_EXTERN JSVM_Status OH_JSVM_ReleaseScript(JSVM_Env env, JSVM_Script script)](#oh_jsvm_releasescript) | 释放由 OH_JSVM_RetainScript 保留的脚本,释放后应避免对传入 script 的再次使用。 |
219| [JSVM_EXTERN JSVM_Status OH_JSVM_OpenInspectorWithName(JSVM_Env env,int pid,const char* name)](#oh_jsvm_openinspectorwithname) | 打开一个名为 name 的 inspector,为其打开对应 pid 的 unix domain 端口。 |
220| [JSVM_EXTERN JSVM_Status OH_JSVM_CompileWasmModule(JSVM_Env env,const uint8_t *wasmBytecode,size_t wasmBytecodeLength,const uint8_t *cacheData,size_t cacheDataLength,bool *cacheRejected,JSVM_Value *wasmModule)](#oh_jsvm_compilewasmmodule) | 将 WebAssembly 字节码编译得到一个 WebAssembly 模块。如果提供了 WebAssembly 缓存,则会先尝试对缓存进行反序列化。如果没有 JIT 权限支持,则打印一行日志提示开发者。 |
221| [JSVM_EXTERN JSVM_Status OH_JSVM_CompileWasmFunction(JSVM_Env env,JSVM_Value wasmModule,uint32_t functionIndex,JSVM_WasmOptLevel optLevel)](#oh_jsvm_compilewasmfunction) | 对当前 WebAssembly 模块中指定索引的函数进行指定优化等级的编译优化。如果没有 JIT 权限支持,则打印一行日志提示开发者。 |
222| [JSVM_EXTERN JSVM_Status OH_JSVM_IsWasmModuleObject(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_iswasmmoduleobject) | 判断给定的 JSVM_Value 是否是一个 WebAssembly 模块。 |
223| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateWasmCache(JSVM_Env env,JSVM_Value wasmModule,const uint8_t** data,size_t* length)](#oh_jsvm_createwasmcache) | 为给定的 WebAssembly 模块生成缓存。如果没有 JIT 权限支持,则打印一行日志提示开发者。 |
224| [JSVM_EXTERN JSVM_Status OH_JSVM_ReleaseCache(JSVM_Env env,const uint8_t* cacheData,JSVM_CacheType cacheType)](#oh_jsvm_releasecache) | 释放给定类型的缓存数据。 |
225| [JSVM_EXTERN JSVM_Status OH_JSVM_IsBigIntObject(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isbigintobject) | 判断给定的 JSVM_Value 是否是一个 BigInt对象。 |
226| [JSVM_EXTERN JSVM_Status OH_JSVM_IsBooleanObject(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isbooleanobject) | 判断给定的 JSVM_Value 是否是一个 Boolean对象。 |
227| [JSVM_EXTERN JSVM_Status OH_JSVM_IsStringObject(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isstringobject) | 判断给定的 JSVM_Value 是否是一个 String对象。 |
228| [JSVM_EXTERN JSVM_Status OH_JSVM_IsNumberObject(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_isnumberobject) | 判断给定的 JSVM_Value 是否是一个 Number对象。 |
229| [JSVM_EXTERN JSVM_Status OH_JSVM_IsSymbolObject(JSVM_Env env,JSVM_Value value,bool* result)](#oh_jsvm_issymbolobject) | 判断给定的 JSVM_Value 是否是一个 Symbol对象。 |
230| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolAsyncIterator(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolasynciterator) | 获取Well-Known symbol里的Symbol.AsyncIterator能力。 |
231| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolHasInstance(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolhasinstance) | 获取Well-Known symbol里的Symbol.HasInstance能力。 |
232| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolIsConcatSpreadable(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolisconcatspreadable) | 获取Well-Known symbol里的Symbol.IsConcatSpreadable能力。 |
233| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolMatch(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolmatch) | 获取Well-Known symbol里的Symbol.Match能力。 |
234| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolReplace(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolreplace) | 获取Well-Known symbol里的Symbol.Replace能力。 |
235| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolSearch(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolsearch) | 获取Well-Known symbol里的Symbol.Search能力。 |
236| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolSplit(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolsplit) | 获取Well-Known symbol里的Symbol.Split能力。 |
237| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolToPrimitive(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymboltoprimitive) | 获取Well-Known symbol里的Symbol.ToPrimitive能力。 |
238| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolUnscopables(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymbolunscopables) | 获取Well-Known symbol里的Symbol.Unscopables能力。 |
239| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolToStringTag(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymboltostringtag) | 获取Well-Known symbol里的Symbol.ToStringTag能力。 |
240| [JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolIterator(JSVM_Env env, JSVM_Value* result)](#oh_jsvm_getsymboliterator) | 获取Well-Known symbol里的Symbol.Iterator能力。 |
241| [JSVM_EXTERN JSVM_Status OH_JSVM_TraceStart(size_t count,const JSVM_TraceCategory* categories,const char* tag,size_t eventsCount)](#oh_jsvm_tracestart) | 对所有 JSVM 运行时实例,开始采集指定 Trace 类别的信息(线程不安全)。 |
242| [JSVM_EXTERN JSVM_Status OH_JSVM_TraceStop(JSVM_OutputStream stream, void* streamData)](#oh_jsvm_tracestop) | 对所有 JSVM 运行时,停止采集指定 Trace 类别的信息(线程不安全)。 |
243| [JSVM_EXTERN JSVM_Status OH_JSVM_AddHandlerForGC(JSVM_VM vm,JSVM_CBTriggerTimeForGC triggerTime,JSVM_HandlerForGC handler,JSVM_GCType gcType,void* userData)](#oh_jsvm_addhandlerforgc) | 在VM中添加GC的回调函数。 |
244| [JSVM_EXTERN JSVM_Status OH_JSVM_RemoveHandlerForGC(JSVM_VM vm,JSVM_CBTriggerTimeForGC triggerTime,JSVM_HandlerForGC handler,void* userData)](#oh_jsvm_removehandlerforgc) | 在VM中移除GC的回调函数。 |
245| [JSVM_EXTERN JSVM_Status OH_JSVM_SetHandlerForOOMError(JSVM_VM vm,JSVM_HandlerForOOMError handler)](#oh_jsvm_sethandlerforoomerror) | 为OOM错误设置回调处理。当接口被重复调用时,仅最后一次生效。当传入的handler为null时,表示取消之前的设置。 |
246| [JSVM_EXTERN JSVM_Status OH_JSVM_SetDebugOption(JSVM_Env env, JSVM_DebugOption debugOption, bool isEnabled)](#oh_jsvm_setdebugoption) | 启用/禁用特定JSVM_Env的指定调试选项。 |
247| [JSVM_EXTERN JSVM_Status OH_JSVM_SetHandlerForFatalError(JSVM_VM vm,JSVM_HandlerForFatalError handler)](#oh_jsvm_sethandlerforfatalerror) | 为Fatal错误设置回调处理。当接口被重复调用时,仅最后一次生效。当传入的handler为null时,表示取消之前的设置。 |
248| [JSVM_EXTERN JSVM_Status OH_JSVM_SetHandlerForPromiseReject(JSVM_VM vm,JSVM_HandlerForPromiseReject handler)](#oh_jsvm_sethandlerforpromisereject) | 为PromiseReject错误设置回调处理。当接口被重复调用时,仅最后一次生效。当传入的handler为null时,表示取消之前的设置。 |
249| [JSVM_EXTERN JSVM_Status OH_JSVM_DefineClassWithOptions(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback constructor,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_Value parentClass,size_t optionCount,JSVM_DefineClassOptions options[],JSVM_Value* result)](#oh_jsvm_defineclasswithoptions) | 在封装一个 C++ 类时,通过构造函数传递的 C++ 构造函数回调应该是类中的一个静态方法,该方法调用实际的类构造函数,然后根据传入的不同选项,将新的 C++ 实例封装在一个 JavaScript 对象中并返回封装对象。 |
250| [JSVM_Status JSVM_CDECL OH_JSVM_CreateExternalStringLatin1(JSVM_Env env,char* str,size_t length,JSVM_Finalize finalizeCallback,void* finalizeHint,JSVM_Value* result,bool* copied)](#oh_jsvm_createexternalstringlatin1) | 此 API 使用 ISO-8859-1 编码的 C 字符串,创建一个外部的 JavaScript 字符串。创建外部字符串失败时会复制原生字符串。 |
251| [JSVM_Status JSVM_CDECL OH_JSVM_CreateExternalStringUtf16(JSVM_Env env,char16_t* str,size_t length,JSVM_Finalize finalizecallback,void* finalizeHint,JSVM_Value* result,bool* copied)](#oh_jsvm_createexternalstringutf16) | 此 API 使用 UTF16-LE 编码的 C 字符串,创建一个外部的 JavaScript 字符串。创建外部字符串失败时会复制原生字符串。 |
252| [JSVM_EXTERN JSVM_Status OH_JSVM_CreatePrivate(JSVM_Env env,JSVM_Value description,JSVM_Data* result)](#oh_jsvm_createprivate) | 创建一个 JavaScript private key 对象。 |
253| [JSVM_EXTERN JSVM_Status OH_JSVM_SetPrivate(JSVM_Env env,JSVM_Value object,JSVM_Data key,JSVM_Value value)](#oh_jsvm_setprivate) | 为传入的object设置一个 private 属性。 |
254| [JSVM_EXTERN JSVM_Status OH_JSVM_GetPrivate(JSVM_Env env,JSVM_Value object,JSVM_Data key,JSVM_Value *result)](#oh_jsvm_getprivate) | 从传入的object获取 private key 对应的 private 属性。 |
255| [JSVM_EXTERN JSVM_Status OH_JSVM_DeletePrivate(JSVM_Env env,JSVM_Value object,JSVM_Data key)](#oh_jsvm_deleteprivate) | 从传入的 object 上删除 private key 对应的 private 属性。 |
256| [JSVM_EXTERN JSVM_Status OH_JSVM_CreateDataReference(JSVM_Env env,JSVM_Data data,uint32_t initialRefcount,JSVM_Ref* result)](#oh_jsvm_createdatareference) | 创建一个对于给定 JSVM_Data 对象的引用,初始的引用计数为传入的 initialRefcount。 |
257| [JSVM_EXTERN JSVM_Status OH_JSVM_GetReferenceData(JSVM_Env env,JSVM_Ref ref,JSVM_Data* result)](#oh_jsvm_getreferencedata) | 如果引用仍然有效,通过 result 参数返回对应的 JSVM_Data,表示与 JSVM_Ref 关联的 JavaScript 值。否则结果将为空。 |
258
259## 函数说明
260
261### OH_JSVM_Init()
262
263```
264JSVM_EXTERN JSVM_Status OH_JSVM_Init(const JSVM_InitOptions* options)
265```
266
267**描述**
268
269初始化一个JavaScript虚拟机。
270
271**起始版本:** 11
272
273
274**参数:**
275
276| 参数项 | 描述 |
277| -- | -- |
278| [const JSVM_InitOptions](capi-jsvm-jsvm-initoptions.md)* options | 用于初始化JavaScript虚拟机的选项。 |
279
280**返回:**
281
282| 类型                                                          | 说明 |
283|-------------------------------------------------------------| -- |
284| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示执行失败,说明当前进程已完成JSVM初始化,无需重复执行。 |
285
286### OH_JSVM_CreateVM()
287
288```
289JSVM_EXTERN JSVM_Status OH_JSVM_CreateVM(const JSVM_CreateVMOptions* options,JSVM_VM* result)
290```
291
292**描述**
293
294创建一个虚拟机实例。
295
296**起始版本:** 11
297
298
299**参数:**
300
301| 参数项 | 描述 |
302| -- | -- |
303| [const JSVM_CreateVMOptions](capi-jsvm-jsvm-createvmoptions.md)* options | 用于创建虚拟机实例的选项。 |
304| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md)* result | 新的虚拟机实例。 |
305
306**返回:**
307
308| 类型 | 说明 |
309| -- | -- |
310| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。 |
311
312### OH_JSVM_SetMicrotaskPolicy()
313
314```
315JSVM_EXTERN JSVM_Status OH_JSVM_SetMicrotaskPolicy(JSVM_VM vm,JSVM_MicrotaskPolicy policy)
316```
317
318**描述**
319
320用于设置虚拟机实例的微任务执行策略。如果该方法未被调用,虚拟机实例的默认策略为 JSVM_MicrotaskPolicy::JSVM_MICROTASK_AUTO。
321
322**起始版本:** 18
323
324
325**参数:**
326
327| 参数项 | 描述 |
328| -- | -- |
329| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 用于设置微任务执行策略的虚拟机实例。 |
330| [JSVM_MicrotaskPolicy](capi-jsvm-types-h.md#jsvm_microtaskpolicy) policy | 执行微任务的策略。 |
331
332**返回:**
333
334| 类型 | 说明 |
335| -- | -- |
336| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  如果接口调用成功,返回 JSVM_OK。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数不合法。 |
337
338### OH_JSVM_DestroyVM()
339
340```
341JSVM_EXTERN JSVM_Status OH_JSVM_DestroyVM(JSVM_VM vm)
342```
343
344**描述**
345
346销毁一个虚拟机实例。
347
348**起始版本:** 11
349
350
351**参数:**
352
353| 参数项 | 描述 |
354| -- | -- |
355| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 待销毁的虚拟机实例。 |
356
357**返回:**
358
359| 类型 | 说明 |
360| -- | -- |
361| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数不合法。 |
362
363### OH_JSVM_CreateProxy()
364
365```
366JSVM_EXTERN JSVM_Status OH_JSVM_CreateProxy(JSVM_Env env,JSVM_Value target,JSVM_Value handler,JSVM_Value* result)
367```
368
369**描述**
370
371创建JavaScript Proxy,等价于在 JavaScript 中执行 new Proxy(target, handler)。
372
373**起始版本:** 18
374
375
376**参数:**
377
378| 参数项 | 描述 |
379| -- | -- |
380| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
381| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) target | 表示用于创建代理的 JavaScript 对象 |
382| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) handler | 表示定义了拦截什么操作及如何处理被拦截操作的 JavaScript 对象。 |
383| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示创建的 JavaScript 代理。 |
384
385**返回:**
386
387| 类型 | 说明 |
388| -- | -- |
389| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示接口调用成功。<br>         [JSVM_OBJECT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 如果 target 或 handler 非 JS 对象。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
390
391### OH_JSVM_IsProxy()
392
393```
394JSVM_Status JSVM_CDECL OH_JSVM_IsProxy(JSVM_Env env,JSVM_Value value,bool* isProxy)
395```
396
397**描述**
398
399判断传入值value是否为 JavaScript Proxy。
400
401**起始版本:** 18
402
403
404**参数:**
405
406| 参数项 | 描述 |
407| -- | -- |
408| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
409| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 需要检查的值。 |
410| bool* isProxy | 表示是否为 JavaScript Proxy,true为是,false为否。 |
411
412**返回:**
413
414| 类型 | 说明 |
415| -- | -- |
416| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示接口调用成功。 |
417
418### OH_JSVM_ProxyGetTarget()
419
420```
421JSVM_Status JSVM_CDECL OH_JSVM_ProxyGetTarget(JSVM_Env env,JSVM_Value value,JSVM_Value* result)
422```
423
424**描述**
425
426获取 JavaScript Proxy 中的目标对象。
427
428**起始版本:** 18
429
430
431**参数:**
432
433| 参数项 | 描述 |
434| -- | -- |
435| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
436| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 需要获取目标对象的代理。 |
437| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代理的目标对象。 |
438
439**返回:**
440
441| 类型 | 说明 |
442| -- | -- |
443| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示接口调用成功。<br>         [JSVM_INVALID_TYPE](capi-jsvm-types-h.md#jsvm_status) 如果 value 非 Javascript Proxy。 |
444
445### OH_JSVM_OpenVMScope()
446
447```
448JSVM_EXTERN JSVM_Status OH_JSVM_OpenVMScope(JSVM_VM vm,JSVM_VMScope* result)
449```
450
451**描述**
452
453为虚拟机实例打开一个新的虚拟机作用域。
454
455**起始版本:** 11
456
457
458**参数:**
459
460| 参数项 | 描述 |
461| -- | -- |
462| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 目标虚拟机实例。 |
463| [JSVM_VMScope](capi-jsvm-jsvm-vmscope--8h.md)* result | 新的虚拟机作用域。 |
464
465**返回:**
466
467| 类型 | 说明 |
468| -- | -- |
469| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
470
471### OH_JSVM_CloseVMScope()
472
473```
474JSVM_EXTERN JSVM_Status OH_JSVM_CloseVMScope(JSVM_VM vm,JSVM_VMScope scope)
475```
476
477**描述**
478
479关闭虚拟机实例的虚拟机作用域。
480
481**起始版本:** 11
482
483
484**参数:**
485
486| 参数项 | 描述 |
487| -- | -- |
488| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 目标虚拟机实例。 |
489| [JSVM_VMScope](capi-jsvm-jsvm-vmscope--8h.md) scope | 将要关闭的虚拟机作用域。 |
490
491**返回:**
492
493| 类型 | 说明 |
494| -- | -- |
495| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
496
497### OH_JSVM_CreateEnv()
498
499```
500JSVM_EXTERN JSVM_Status OH_JSVM_CreateEnv(JSVM_VM vm,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_Env* result)
501```
502
503**描述**
504
505基于新环境上下文的可选属性,创建一个新环境。
506
507**起始版本:** 11
508
509
510**参数:**
511
512| 参数项 | 描述 |
513| -- | -- |
514| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 虚拟机实例,新环境将在该实例中创建。 |
515| size_t propertyCount | 属性数组中元素的个数。 |
516| [const JSVM_PropertyDescriptor](capi-jsvm-jsvm-propertydescriptor.md)* properties | 属性描述符的数组。 |
517| [JSVM_Env](capi-jsvm-jsvm-env--8h.md)* result | 创建的新环境。 |
518
519**返回:**
520
521| 类型 | 说明 |
522| -- | -- |
523| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
524
525### OH_JSVM_CreateEnvFromSnapshot()
526
527```
528JSVM_EXTERN JSVM_Status OH_JSVM_CreateEnvFromSnapshot(JSVM_VM vm,size_t index,JSVM_Env* result)
529```
530
531**描述**
532
533基于虚拟机的起始快照,创建一个新的环境。
534
535**起始版本:** 11
536
537
538**参数:**
539
540| 参数项 | 描述 |
541| -- | -- |
542| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 虚拟机实例,新环境将在该实例中创建。 |
543| size_t index | 环境在快照中的索引。 |
544| [JSVM_Env](capi-jsvm-jsvm-env--8h.md)* result | 创建的新环境。 |
545
546**返回:**
547
548| 类型 | 说明 |
549| -- | -- |
550| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
551
552### OH_JSVM_DestroyEnv()
553
554```
555JSVM_EXTERN JSVM_Status OH_JSVM_DestroyEnv(JSVM_Env env)
556```
557
558**描述**
559
560销毁环境。
561
562**起始版本:** 11
563
564
565**参数:**
566
567| 参数项 | 描述 |
568| -- | -- |
569| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 待销毁的环境。 |
570
571**返回:**
572
573| 类型 | 说明 |
574| -- | -- |
575| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
576
577### OH_JSVM_OpenEnvScope()
578
579```
580JSVM_EXTERN JSVM_Status OH_JSVM_OpenEnvScope(JSVM_Env env,JSVM_EnvScope* result)
581```
582
583**描述**
584
585打开一个新的环境作用域。
586
587**起始版本:** 11
588
589
590**参数:**
591
592| 参数项 | 描述 |
593| -- | -- |
594| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
595| [JSVM_EnvScope](capi-jsvm-jsvm-envscope--8h.md)* result | 新的环境作用域。 |
596
597**返回:**
598
599| 类型 | 说明 |
600| -- | -- |
601| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
602
603### OH_JSVM_CloseEnvScope()
604
605```
606JSVM_EXTERN JSVM_Status OH_JSVM_CloseEnvScope(JSVM_Env env,JSVM_EnvScope scope)
607```
608
609**描述**
610
611关闭环境作用域。
612
613**起始版本:** 11
614
615
616**参数:**
617
618| 参数项 | 描述 |
619| -- | -- |
620| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
621| [JSVM_EnvScope](capi-jsvm-jsvm-envscope--8h.md) scope | 将要关闭的环境作用域。 |
622
623**返回:**
624
625| 类型 | 说明 |
626| -- | -- |
627| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
628
629### OH_JSVM_GetVM()
630
631```
632JSVM_EXTERN JSVM_Status OH_JSVM_GetVM(JSVM_Env env,JSVM_VM* result)
633```
634
635**描述**
636
637检索给定环境的虚拟机实例。
638
639**起始版本:** 12
640
641
642**参数:**
643
644| 参数项 | 描述 |
645| -- | -- |
646| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
647| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md)* result | 给定环境的虚拟机实例。 |
648
649**返回:**
650
651| 类型 | 说明 |
652| -- | -- |
653| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
654
655### OH_JSVM_CompileScript()
656
657```
658JSVM_EXTERN JSVM_Status OH_JSVM_CompileScript(JSVM_Env env,JSVM_Value script,const uint8_t* cachedData,size_t cacheDataLength,bool eagerCompile,bool* cacheRejected,JSVM_Script* result)
659```
660
661**描述**
662
663编译一串JavaScript代码,并返回编译后的脚本。
664
665**起始版本:** 11
666
667
668**参数:**
669
670| 参数项 | 描述 |
671| -- | -- |
672| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
673| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) script | 包含要编译的脚本的JavaScript代码。 |
674| const uint8_t* cachedData | 可选。脚本的代码缓存数据。 |
675| size_t cacheDataLength | cachedData数组的长度。 |
676| bool eagerCompile | 是否立即编译脚本,true为是,false为否。 |
677| bool* cacheRejected | 代码缓存是否被编译拒绝,true为是,false为否。 |
678| [JSVM_Script](capi-jsvm-jsvm-script--8h.md)* result | 编译后的脚本。 |
679
680**返回:**
681
682| 类型 | 说明 |
683| -- | -- |
684| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
685
686### OH_JSVM_CompileScriptWithOrigin()
687
688```
689JSVM_EXTERN JSVM_Status OH_JSVM_CompileScriptWithOrigin(JSVM_Env env,JSVM_Value script,const uint8_t* cachedData,size_t cacheDataLength,bool eagerCompile,bool* cacheRejected,JSVM_ScriptOrigin* origin,JSVM_Script* result)
690```
691
692**描述**
693
694编译一串包含 sourcemap 信息的 JavaScript 代码,并返回编译后的脚本。
695
696**起始版本:** 12
697
698
699**参数:**
700
701| 参数项 | 描述 |
702| -- | -- |
703| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
704| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) script | 包含要编译的脚本的JavaScript代码。 |
705| const uint8_t* cachedData | 可选。脚本的代码缓存数据。 |
706| size_t cacheDataLength | cachedData数组的长度。 |
707| bool eagerCompile | 是否立即编译脚本,true为是,false为否。 |
708| bool* cacheRejected | 代码缓存是否被编译拒绝,true为是,false为否。 |
709| [JSVM_ScriptOrigin](capi-jsvm-jsvm-scriptorigin.md)* origin | 源代码信息,包括 source map 的位置和源代码文件名等信息。 |
710| [JSVM_Script](capi-jsvm-jsvm-script--8h.md)* result | 编译后的脚本。 |
711
712**返回:**
713
714| 类型 | 说明 |
715| -- | -- |
716| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
717
718### OH_JSVM_CompileScriptWithOptions()
719
720```
721JSVM_EXTERN JSVM_Status OH_JSVM_CompileScriptWithOptions(JSVM_Env env,JSVM_Value script,size_t optionCount,JSVM_CompileOptions options[],JSVM_Value* result)
722```
723
724**描述**
725
726编译一串JavaScript代码,并返回编译后的脚本。
727
728**起始版本:** 12
729
730
731**参数:**
732
733| 参数项 | 描述 |
734| -- | -- |
735| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
736| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) script | 包含要编译的脚本的JavaScript代码。 |
737| size_t optionCount | 传入的 option 数组的长度。 |
738| JSVM_CompileOptions options[] | option 数组,存放所有的编译选项。 |
739| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 编译后的脚本。 |
740
741**返回:**
742
743| 类型 | 说明 |
744| -- | -- |
745| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的 data 是空指针。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
746
747### OH_JSVM_CreateCodeCache()
748
749```
750JSVM_EXTERN JSVM_Status OH_JSVM_CreateCodeCache(JSVM_Env env,JSVM_Script script,const uint8_t** data,size_t* length)
751```
752
753**描述**
754
755为编译后的脚本创建代码缓存。
756
757**起始版本:** 11
758
759
760**参数:**
761
762| 参数项 | 描述 |
763| -- | -- |
764| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 目标环境,JSVM-API接口将在该环境下调用。 |
765| [JSVM_Script](capi-jsvm-jsvm-script--8h.md) script | 目标编译脚本。 |
766| const uint8_t** data | 代码缓存的数据。 |
767| size_t* length | 代码缓存数据的长度。 |
768
769**返回:**
770
771| 类型 | 说明 |
772| -- | -- |
773| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。 |
774
775### OH_JSVM_RunScript()
776
777```
778JSVM_EXTERN JSVM_Status OH_JSVM_RunScript(JSVM_Env env,JSVM_Script script,JSVM_Value* result)
779```
780
781**描述**
782
783执行一串JavaScript代码并返回其结果,其中包含以下注意事项:与eval不同的是,该函数不允许脚本访问当前词法作用域,因此也不允许访问模块作用域,这意味着require等伪全局变量将不可用。脚本可以访问全局作用域。脚本中的函数和var声明将被添加到全局对象。使用let和const的变量声明将全局可见,但不会被添加到全局对象。this的值在脚本内是global。如果没有 JIT 权限支持,执行含wasm的脚本会失败,在特定场景下存在性能差异,并打印一行日志提示开发者。
784
785**起始版本:** 11
786
787
788**参数:**
789
790| 参数项 | 描述 |
791| -- | -- |
792| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
793| [JSVM_Script](capi-jsvm-jsvm-script--8h.md) script | 包含要执行的脚本的JavaScript字符串。 |
794| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 执行脚本产生的值。 |
795
796**返回:**
797
798| 类型 | 说明 |
799| -- | -- |
800| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
801
802### OH_JSVM_SetInstanceData()
803
804```
805JSVM_EXTERN JSVM_Status OH_JSVM_SetInstanceData(JSVM_Env env,void* data,JSVM_Finalize finalizeCb,void* finalizeHint)
806```
807
808**描述**
809
810将data与当前运行的JSVM环境相关联。后续可以使用OH_JSVM_GetInstanceData()检索data。通过先前调用OH_JSVM_SetInstanceData()设置的任何与当前运行的JSVM环境相关联的现有数据都将被覆盖。如果先前提供了finalizeCb,则不会调用它。
811
812**起始版本:** 11
813
814
815**参数:**
816
817| 参数项                                                            | 描述 |
818|----------------------------------------------------------------| -- |
819| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env                      | 调用JSVM-API的环境。 |
820| void* data                                                     | 可用于此实例的绑定的数据项。 |
821| [JSVM_Finalize](capi-jsvm-types-h.md#jsvm_finalize) finalizeCb | 销毁环境时调用的函数,该函数接收data以便释放它。 |
822| void* finalizeHint                                             | 在收集期间传递给最终回调的可选提示。 |
823
824**返回:**
825
826| 类型 | 说明 |
827| -- | -- |
828| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
829
830### OH_JSVM_GetInstanceData()
831
832```
833JSVM_EXTERN JSVM_Status OH_JSVM_GetInstanceData(JSVM_Env env,void** data)
834```
835
836**描述**
837
838检索通过调用OH_JSVM_SetInstanceData()与当前运行JSVM环境产生关联的数据。如果未设置任何关联数据,该函数调用将成功,且data设置为NULL。
839
840**起始版本:** 11
841
842
843**参数:**
844
845| 参数项 | 描述 |
846| -- | -- |
847| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
848| void** data | 之前通过调用OH_JSVM_SetInstanceData()与当前运行的JSVM环境关联的数据项。 |
849
850**返回:**
851
852| 类型 | 说明 |
853| -- | -- |
854| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
855
856### OH_JSVM_GetLastErrorInfo()
857
858```
859JSVM_EXTERN JSVM_Status OH_JSVM_GetLastErrorInfo(JSVM_Env env,const JSVM_ExtendedErrorInfo** result)
860```
861
862**描述**
863
864检索JSVM_ExtendedErrorInfo结构,其中包含发生的最后一个错误的有关信息。返回的JSVM_ExtendedErrorInfo的内容仅在对同一env调用JSVM-API函数之前有效。这包括对OH_JSVM_IsExceptionPending的调用,因此可能经常需要复制信息以便以后使用。error_message中返回的指针指向一个静态定义的字符串,因此如果你在调用另一个JSVM-API函数之前将它从error_message字段(将被覆盖)中复制出来,则可以安全地使用该指针。
865
866**起始版本:** 11
867
868
869**参数:**
870
871| 参数项 | 描述 |
872| -- | -- |
873| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
874| [const JSVM_ExtendedErrorInfo](capi-jsvm-jsvm-extendederrorinfo.md)** result | 包含有关错误的更多信息的JSVM_ExtendedErrorInfo结构。 |
875
876**返回:**
877
878| 类型 | 说明 |
879| -- | -- |
880| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
881
882### OH_JSVM_Throw()
883
884```
885JSVM_EXTERN JSVM_Status OH_JSVM_Throw(JSVM_Env env,JSVM_Value error)
886```
887
888**描述**
889
890抛出提供的JavaScript值。
891
892**起始版本:** 11
893
894
895**参数:**
896
897| 参数项 | 描述 |
898| -- | -- |
899| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
900| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) error | 要抛出的JavaScript值。 |
901
902**返回:**
903
904| 类型 | 说明 |
905| -- | -- |
906| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
907
908### OH_JSVM_ThrowError()
909
910```
911JSVM_EXTERN JSVM_Status OH_JSVM_ThrowError(JSVM_Env env,const char* code,const char* msg)
912```
913
914**描述**
915
916抛出带有所提供文本的JavaScript Error。
917
918**起始版本:** 11
919
920
921**参数:**
922
923| 参数项 | 描述 |
924| -- | -- |
925| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
926| const char* code | 要在错误上设置的可选错误代码。 |
927| const char* msg | 表示与错误关联的文本的C字符串。 |
928
929**返回:**
930
931| 类型 | 说明 |
932| -- | -- |
933| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
934
935### OH_JSVM_ThrowTypeError()
936
937```
938JSVM_EXTERN JSVM_Status OH_JSVM_ThrowTypeError(JSVM_Env env,const char* code,const char* msg)
939```
940
941**描述**
942
943抛出带有所提供文本的JavaScript TypeError。
944
945**起始版本:** 11
946
947
948**参数:**
949
950| 参数项 | 描述 |
951| -- | -- |
952| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
953| const char* code | 要在错误上设置的可选错误代码。 |
954| const char* msg | 表示与错误关联的文本的C字符串。 |
955
956**返回:**
957
958| 类型 | 说明 |
959| -- | -- |
960| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
961
962### OH_JSVM_ThrowRangeError()
963
964```
965JSVM_EXTERN JSVM_Status OH_JSVM_ThrowRangeError(JSVM_Env env,const char* code,const char* msg)
966```
967
968**描述**
969
970抛出带有所提供文本的JavaScript RangeError。
971
972**起始版本:** 11
973
974
975**参数:**
976
977| 参数项 | 描述 |
978| -- | -- |
979| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
980| const char* code | 要在错误上设置的可选错误代码。 |
981| const char* msg | 表示与错误关联的文本的C字符串。 |
982
983**返回:**
984
985| 类型 | 说明 |
986| -- | -- |
987| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
988
989### OH_JSVM_ThrowSyntaxError()
990
991```
992JSVM_EXTERN JSVM_Status OH_JSVM_ThrowSyntaxError(JSVM_Env env,const char* code,const char* msg)
993```
994
995**描述**
996
997抛出带有所提供文本的JavaScript SyntaxError。
998
999**起始版本:** 11
1000
1001
1002**参数:**
1003
1004| 参数项 | 描述 |
1005| -- | -- |
1006| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1007| const char* code | 要在错误上设置的可选错误代码。 |
1008| const char* msg | 表示与错误关联的文本的C字符串。 |
1009
1010**返回:**
1011
1012| 类型 | 说明 |
1013| -- | -- |
1014| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1015
1016### OH_JSVM_IsError()
1017
1018```
1019JSVM_EXTERN JSVM_Status OH_JSVM_IsError(JSVM_Env env,JSVM_Value value,bool* result)
1020```
1021
1022**描述**
1023
1024查询JSVM_Value以检查它是否表示错误对象。
1025
1026**起始版本:** 11
1027
1028
1029**参数:**
1030
1031| 参数项 | 描述 |
1032| -- | -- |
1033| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1034| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
1035| bool* result | 如果JSVM_Value表示错误,则设置为true的布尔值,否则设置为false。 |
1036
1037**返回:**
1038
1039| 类型 | 说明 |
1040| -- | -- |
1041| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1042
1043### OH_JSVM_CreateError()
1044
1045```
1046JSVM_EXTERN JSVM_Status OH_JSVM_CreateError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)
1047```
1048
1049**描述**
1050
1051返回带有所提供文本的JavaScript Error。
1052
1053**起始版本:** 11
1054
1055
1056**参数:**
1057
1058| 参数项 | 描述 |
1059| -- | -- |
1060| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1061| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) code | 可选的JSVM_Value,带有与错误关联的错误代码的字符串。 |
1062| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) msg | 引用JavaScript string用作Error的消息。 |
1063| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示创建的错误。 |
1064
1065**返回:**
1066
1067| 类型 | 说明 |
1068| -- | -- |
1069| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
1070
1071### OH_JSVM_CreateTypeError()
1072
1073```
1074JSVM_EXTERN JSVM_Status OH_JSVM_CreateTypeError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)
1075```
1076
1077**描述**
1078
1079返回带有所提供文本的JavaScript TypeError。
1080
1081**起始版本:** 11
1082
1083
1084**参数:**
1085
1086| 参数项 | 描述 |
1087| -- | -- |
1088| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1089| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) code | 可选的JSVM_Value,带有与错误关联的错误代码的字符串。 |
1090| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) msg | 引用JavaScript string用作Error的消息。 |
1091| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示创建的错误。 |
1092
1093**返回:**
1094
1095| 类型 | 说明 |
1096| -- | -- |
1097| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
1098
1099### OH_JSVM_CreateRangeError()
1100
1101```
1102JSVM_EXTERN JSVM_Status OH_JSVM_CreateRangeError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)
1103```
1104
1105**描述**
1106
1107返回带有所提供文本的JavaScript RangeError。
1108
1109**起始版本:** 11
1110
1111
1112**参数:**
1113
1114| 参数项 | 描述 |
1115| -- | -- |
1116| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1117| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) code | 可选的JSVM_Value,带有与错误关联的错误代码的字符串。 |
1118| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) msg | 引用JavaScript string用作Error的消息。 |
1119| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示创建的错误。 |
1120
1121**返回:**
1122
1123| 类型 | 说明 |
1124| -- | -- |
1125| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
1126
1127### OH_JSVM_CreateSyntaxError()
1128
1129```
1130JSVM_EXTERN JSVM_Status OH_JSVM_CreateSyntaxError(JSVM_Env env,JSVM_Value code,JSVM_Value msg,JSVM_Value* result)
1131```
1132
1133**描述**
1134
1135返回带有所提供文本的JavaScript SyntaxError。
1136
1137**起始版本:** 11
1138
1139
1140**参数:**
1141
1142| 参数项 | 描述 |
1143| -- | -- |
1144| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1145| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) code | 可选的JSVM_Value,带有与错误关联的错误代码的字符串。 |
1146| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) msg | 引用JavaScript string用作Error的消息。 |
1147| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示创建的错误。 |
1148
1149**返回:**
1150
1151| 类型 | 说明 |
1152| -- | -- |
1153| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
1154
1155### OH_JSVM_GetAndClearLastException()
1156
1157```
1158JSVM_EXTERN JSVM_Status OH_JSVM_GetAndClearLastException(JSVM_Env env,JSVM_Value* result)
1159```
1160
1161**描述**
1162
1163获取并清除上一次异常。如果出现挂起,则返回JavaScript异常,否则返回NULL。
1164
1165**起始版本:** 11
1166
1167
1168**参数:**
1169
1170| 参数项 | 描述 |
1171| -- | -- |
1172| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1173| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 如果出现挂起则返回异常,否则为NULL。 |
1174
1175**返回:**
1176
1177| 类型 | 说明 |
1178| -- | -- |
1179| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1180
1181### OH_JSVM_IsExceptionPending()
1182
1183```
1184JSVM_EXTERN JSVM_Status OH_JSVM_IsExceptionPending(JSVM_Env env,bool* result)
1185```
1186
1187**描述**
1188
1189查询上一次异常是否由挂起导致的。如果由异常导致,则返回true,否则返回false。
1190
1191**起始版本:** 11
1192
1193
1194**参数:**
1195
1196| 参数项 | 描述 |
1197| -- | -- |
1198| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1199| bool* result | 如果异常挂起,则设置为true的布尔值,否则为false。 |
1200
1201**返回:**
1202
1203| 类型 | 说明 |
1204| -- | -- |
1205| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1206
1207### OH_JSVM_OpenHandleScope()
1208
1209```
1210JSVM_EXTERN JSVM_Status OH_JSVM_OpenHandleScope(JSVM_Env env,JSVM_HandleScope* result)
1211```
1212
1213**描述**
1214
1215开辟了一个新的作用域。
1216
1217**起始版本:** 11
1218
1219
1220**参数:**
1221
1222| 参数项 | 描述 |
1223| -- | -- |
1224| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1225| [JSVM_HandleScope](capi-jsvm-jsvm-handlescope--8h.md)* result | 代表新作用域。 |
1226
1227**返回:**
1228
1229| 类型 | 说明 |
1230| -- | -- |
1231| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1232
1233### OH_JSVM_CloseHandleScope()
1234
1235```
1236JSVM_EXTERN JSVM_Status OH_JSVM_CloseHandleScope(JSVM_Env env,JSVM_HandleScope scope)
1237```
1238
1239**描述**
1240
1241(必须)按照创建作用域的相反顺序关闭传入的作用域。
1242
1243**起始版本:** 11
1244
1245
1246**参数:**
1247
1248| 参数项 | 描述 |
1249| -- | -- |
1250| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1251| [JSVM_HandleScope](capi-jsvm-jsvm-handlescope--8h.md) scope | 表示要关闭的作用域。 |
1252
1253**返回:**
1254
1255| 类型 | 说明 |
1256| -- | -- |
1257| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_HANDLE_SCOPE_MISMATCH](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。 |
1258
1259### OH_JSVM_OpenEscapableHandleScope()
1260
1261```
1262JSVM_EXTERN JSVM_Status OH_JSVM_OpenEscapableHandleScope(JSVM_Env env,JSVM_EscapableHandleScope* result)
1263```
1264
1265**描述**
1266
1267打开一个可以将某对象从其中提到外部作用域的新作用域。
1268
1269**起始版本:** 11
1270
1271
1272**参数:**
1273
1274| 参数项 | 描述 |
1275| -- | -- |
1276| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1277| [JSVM_EscapableHandleScope](capi-jsvm-jsvm-escapablehandlescope--8h.md)* result | 代表新作用域。 |
1278
1279**返回:**
1280
1281| 类型 | 说明 |
1282| -- | -- |
1283| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1284
1285### OH_JSVM_CloseEscapableHandleScope()
1286
1287```
1288JSVM_EXTERN JSVM_Status OH_JSVM_CloseEscapableHandleScope(JSVM_Env env,JSVM_EscapableHandleScope scope)
1289```
1290
1291**描述**
1292
1293(必须)按照创建作用域的相反顺序关闭传入的作用域。即使存在挂起的JavaScript异常,也可以调用此JSVM_API。
1294
1295**起始版本:** 11
1296
1297
1298**参数:**
1299
1300| 参数项 | 描述 |
1301| -- | -- |
1302| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1303| [JSVM_EscapableHandleScope](capi-jsvm-jsvm-escapablehandlescope--8h.md) scope | 表示要关闭的作用域。 |
1304
1305**返回:**
1306
1307| 类型 | 说明 |
1308| -- | -- |
1309| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_HANDLE_SCOPE_MISMATCH](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。 |
1310
1311### OH_JSVM_EscapeHandle()
1312
1313```
1314JSVM_EXTERN JSVM_Status OH_JSVM_EscapeHandle(JSVM_Env env,JSVM_EscapableHandleScope scope,JSVM_Value escapee,JSVM_Value* result)
1315```
1316
1317**描述**
1318
1319提升JavaScript对象的句柄,使其在外部作用域的生命周期内有效。每个作用域只能调用一次。如果多次调用,将返回错误。
1320
1321**起始版本:** 11
1322
1323
1324**参数:**
1325
1326| 参数项 | 描述 |
1327| -- | -- |
1328| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1329| [JSVM_EscapableHandleScope](capi-jsvm-jsvm-escapablehandlescope--8h.md) scope | 表示当前的作用域。 |
1330| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) escapee | 表示要提升的JavaScript Object。 |
1331| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 被提升的Object在外部作用域中的句柄。 |
1332
1333**返回:**
1334
1335| 类型 | 说明 |
1336| -- | -- |
1337| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_ESCAPE_CALLED_TWICE](capi-jsvm-types-h.md#jsvm_status) 表示scope对象已被关闭。 |
1338
1339### OH_JSVM_CreateReference()
1340
1341```
1342JSVM_EXTERN JSVM_Status OH_JSVM_CreateReference(JSVM_Env env,JSVM_Value value,uint32_t initialRefcount,JSVM_Ref* result)
1343```
1344
1345**描述**
1346
1347对传入的值创建一个具有指定引用计数的新引用。
1348
1349**起始版本:** 11
1350
1351
1352**参数:**
1353
1354| 参数项 | 描述 |
1355| -- | -- |
1356| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1357| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 正在为其创建引用的JSVM_Value。 |
1358| uint32_t initialRefcount | 新引用的初始引用计数。 |
1359| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md)* result | 指向新的引用。 |
1360
1361**返回:**
1362
1363| 类型 | 说明 |
1364| -- | -- |
1365| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1366
1367### OH_JSVM_DeleteReference()
1368
1369```
1370JSVM_EXTERN JSVM_Status OH_JSVM_DeleteReference(JSVM_Env env,JSVM_Ref ref)
1371```
1372
1373**描述**
1374
1375删除传入的引用。
1376
1377**起始版本:** 11
1378
1379
1380**参数:**
1381
1382| 参数项 | 描述 |
1383| -- | -- |
1384| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1385| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md) ref | 需删除的JSVM_Ref。 |
1386
1387**返回:**
1388
1389| 类型 | 说明 |
1390| -- | -- |
1391| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1392
1393### OH_JSVM_ReferenceRef()
1394
1395```
1396JSVM_EXTERN JSVM_Status OH_JSVM_ReferenceRef(JSVM_Env env,JSVM_Ref ref,uint32_t* result)
1397```
1398
1399**描述**
1400
1401增加传入引用的引用计数并返回生成的引用计数。
1402
1403**起始版本:** 11
1404
1405
1406**参数:**
1407
1408| 参数项 | 描述 |
1409| -- | -- |
1410| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1411| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md) ref | 传入的引用,其引用计数将增加。 |
1412| uint32_t* result | 新的引用计数。 |
1413
1414**返回:**
1415
1416| 类型 | 说明 |
1417| -- | -- |
1418| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1419
1420### OH_JSVM_ReferenceUnref()
1421
1422```
1423JSVM_EXTERN JSVM_Status OH_JSVM_ReferenceUnref(JSVM_Env env,JSVM_Ref ref,uint32_t* result)
1424```
1425
1426**描述**
1427
1428递减传入引用的引用计数并返回生成的引用计数。
1429
1430**起始版本:** 11
1431
1432
1433**参数:**
1434
1435| 参数项 | 描述 |
1436| -- | -- |
1437| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1438| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md) ref | 将减少其引用计数的JSVM_Ref。 |
1439| uint32_t* result | 新的引用计数。 |
1440
1441**返回:**
1442
1443| 类型 | 说明 |
1444| -- | -- |
1445| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。 |
1446
1447### OH_JSVM_GetReferenceValue()
1448
1449```
1450JSVM_EXTERN JSVM_Status OH_JSVM_GetReferenceValue(JSVM_Env env,JSVM_Ref ref,JSVM_Value* result)
1451```
1452
1453**描述**
1454
1455如果仍然有效,此JSVM-API将返回JSVM_Value,表示与JSVM_Ref关联的JavaScript值。否则,结果将为NULL。
1456
1457**起始版本:** 11
1458
1459
1460**参数:**
1461
1462| 参数项 | 描述 |
1463| -- | -- |
1464| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1465| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md) ref | 请求相应值的JSVM_Ref。 |
1466| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | JSVM_Ref引用的JSVM_Value。 |
1467
1468**返回:**
1469
1470| 类型 | 说明 |
1471| -- | -- |
1472| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1473
1474### OH_JSVM_CreateArray()
1475
1476```
1477JSVM_EXTERN JSVM_Status OH_JSVM_CreateArray(JSVM_Env env,JSVM_Value* result)
1478```
1479
1480**描述**
1481
1482返回对应于JavaScript Array类型的JSVM-API值。
1483
1484**起始版本:** 11
1485
1486
1487**参数:**
1488
1489| 参数项 | 描述 |
1490| -- | -- |
1491| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1492| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript Array的JSVM_Value。 |
1493
1494**返回:**
1495
1496| 类型 | 说明 |
1497| -- | -- |
1498| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1499
1500### OH_JSVM_CreateArrayWithLength()
1501
1502```
1503JSVM_EXTERN JSVM_Status OH_JSVM_CreateArrayWithLength(JSVM_Env env,size_t length,JSVM_Value* result)
1504```
1505
1506**描述**
1507
1508返回对应于JavaScript Array类型的JSVM-API值。Array的长度属性设置为传入的长度参数。但是,不保证底层缓冲区在创建数组时由VM预先分配。该行为留给底层VM实现。
1509
1510**起始版本:** 11
1511
1512
1513**参数:**
1514
1515| 参数项 | 描述 |
1516| -- | -- |
1517| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1518| size_t length | 数组的初始长度。 |
1519| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript Array的JSVM_Value。 |
1520
1521**返回:**
1522
1523| 类型 | 说明 |
1524| -- | -- |
1525| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1526
1527### OH_JSVM_CreateArraybuffer()
1528
1529```
1530JSVM_EXTERN JSVM_Status OH_JSVM_CreateArraybuffer(JSVM_Env env,size_t byteLength,void** data,JSVM_Value* result)
1531```
1532
1533**描述**
1534
1535返回JavaScript ArrayBuffer类型对应的JSVM-API值。ArrayBuffer用于表示固定长度的二进制数据缓冲区。通常用作TypedArray对象的后备缓冲区。分配的ArrayBuffer有一个底层字节缓冲区,其大小由传入的length参数决定。底层缓冲区可选择返回给调用方,调用方可直接操作该缓冲区。此缓冲区只能直接从native代码写入。如果想从JavaScript写入该缓冲区,需创建TypedArray或DataView对象。
1536
1537**起始版本:** 11
1538
1539
1540**参数:**
1541
1542| 参数项 | 描述 |
1543| -- | -- |
1544| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1545| size_t byteLength | 要创建的数组缓冲区的字节长度。 |
1546| void** data | 指向ArrayBuffer的底层字节缓冲区的指针。data可以选择性地通过传递NULL来忽略。 |
1547| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript ArrayBuffer的JSVM_Value。 |
1548
1549**返回:**
1550
1551| 类型 | 说明 |
1552| -- | -- |
1553| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
1554
1555### OH_JSVM_AllocateArrayBufferBackingStoreData()
1556
1557```
1558JSVM_Status JSVM_CDECL OH_JSVM_AllocateArrayBufferBackingStoreData(size_t byteLength,JSVM_InitializedFlag initialized,void **data)
1559```
1560
1561**描述**
1562
1563申请一段 BackingStore 内存给 array buffer 使用。
1564
1565**起始版本:** 12
1566
1567
1568**参数:**
1569
1570| 参数项 | 描述 |
1571| -- | -- |
1572| size_t byteLength | BackingStore 内存的大小。 |
1573| [JSVM_InitializedFlag](capi-jsvm-types-h.md#jsvm_initializedflag) initialized | BackingStore 内存初始化的方式。 |
1574| void **data | 用于接受申请 BackingStore 内存地址的指针。 |
1575
1576**返回:**
1577
1578| 类型 | 说明 |
1579| -- | -- |
1580| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的 data 是空指针。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示内存申请失败。 |
1581
1582### OH_JSVM_FreeArrayBufferBackingStoreData()
1583
1584```
1585JSVM_Status JSVM_CDECL OH_JSVM_FreeArrayBufferBackingStoreData(void *data)
1586```
1587
1588**描述**
1589
1590释放由 OH_JSVM_AllocateArrayBufferBackingStoreData 申请的 BackingStore 内存。
1591
1592**起始版本:** 12
1593
1594
1595**参数:**
1596
1597| 参数项 | 描述 |
1598| -- | -- |
1599| void *data| 申请得到的 BackingStore 内存。 |
1600
1601**返回:**
1602
1603| 类型 | 说明 |
1604| -- | -- |
1605| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的 data 是空指针。 |
1606
1607### OH_JSVM_CreateArrayBufferFromBackingStoreData()
1608
1609```
1610JSVM_Status JSVM_CDECL OH_JSVM_CreateArrayBufferFromBackingStoreData(JSVM_Env env,void *data,size_t backingStoreSize,size_t offset,size_t arrayBufferSize,JSVM_Value *result)
1611```
1612
1613**描述**
1614
1615在申请得到的 BackingStore 内存上创建 array buffer。
1616
1617**起始版本:** 12
1618
1619
1620**参数:**
1621
1622| 参数项 | 描述 |
1623| -- | -- |
1624| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1625| void *data | 申请得到的 BackingStore 内存。 |
1626| size_t backingStoreSize | BackingStore 内存的大小。 |
1627| size_t offset | array buffer 在这段内存上的起始位置与内存头之间的相对偏移,单位是字节。 |
1628| size_t arrayBufferSize | array buffer 的大小,单位是字节。 |
1629| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) *result | 接收 array buffer 地址的指针。 |
1630
1631**返回:**
1632
1633| 类型 | 说明 |
1634| -- | -- |
1635| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示触发了下面描述的异常情况之一:<br>         1. offset + arrayBufferSize > backingStoreSize。<br>         2. backingStoreSize 或者 arrayBufferSize 为 0。<br>         3. data 或者 result 为空。 |
1636
1637### OH_JSVM_CreateDate()
1638
1639```
1640JSVM_EXTERN JSVM_Status OH_JSVM_CreateDate(JSVM_Env env,double time,JSVM_Value* result)
1641```
1642
1643**描述**
1644
1645分配一个JavaScript Date对象。此API不处理闰秒。这是因为ECMAScript遵循POSIX时间规范,对闰秒进行忽略。
1646
1647**起始版本:** 11
1648
1649
1650**参数:**
1651
1652| 参数项 | 描述 |
1653| -- | -- |
1654| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1655| double time | 自1970年1月1日UTC以来的ECMAScript时间值(以毫秒为单位)。 |
1656| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript Date对象的JSVM_Value。 |
1657
1658**返回:**
1659
1660| 类型 | 说明 |
1661| -- | -- |
1662| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
1663
1664### OH_JSVM_CreateExternal()
1665
1666```
1667JSVM_EXTERN JSVM_Status OH_JSVM_CreateExternal(JSVM_Env env,void* data,JSVM_Finalize finalizeCb,void* finalizeHint,JSVM_Value* result)
1668```
1669
1670**描述**
1671
1672分配一个带有外部数据的JavaScript值。这用于通过JavaScript代码传递外部数据。后续可以使用OH_JSVM_GetValueExternal由native代码检索。该API添加了一个JSVM_Finalize回调,当刚刚创建的JavaScript对象被垃圾回收时将调用该回调。创建的值不是一个对象,因此不支持附加属性。它被认为是一个独特的值类型:使用外部值调用OH_JSVM_Typeof()会生成JSVM_EXTERNAL。
1673
1674**起始版本:** 11
1675
1676
1677**参数:**
1678
1679| 参数项 | 描述 |
1680| -- | -- |
1681| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1682| void* data | 指向外部数据的原始指针。 |
1683| [JSVM_Finalize](capi-jsvm-types-h.md#jsvm_finalize) finalizeCb | 收集外部值时调用的可选回调。JSVM_Finalize提供了更多详细信息。 |
1684| void* finalizeHint | 在收集期间传递给最终回调的可选提示。 |
1685| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示外部值的JSVM_Value。 |
1686
1687**返回:**
1688
1689| 类型 | 说明 |
1690| -- | -- |
1691| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1692
1693### OH_JSVM_CreateObject()
1694
1695```
1696JSVM_EXTERN JSVM_Status OH_JSVM_CreateObject(JSVM_Env env,JSVM_Value* result)
1697```
1698
1699**描述**
1700
1701分配一个默认的JavaScript对象。该函数功能等同于在JavaScript中执行new Object()。
1702
1703**起始版本:** 11
1704
1705
1706**参数:**
1707
1708| 参数项 | 描述 |
1709| -- | -- |
1710| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1711| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript对象的JSVM_Value。 |
1712
1713**返回:**
1714
1715| 类型 | 说明 |
1716| -- | -- |
1717| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1718
1719### OH_JSVM_CreateSymbol()
1720
1721```
1722JSVM_EXTERN JSVM_Status OH_JSVM_CreateSymbol(JSVM_Env env,JSVM_Value description,JSVM_Value* result)
1723```
1724
1725**描述**
1726
1727用UTF8编码的C字符串创建JavaScript symbol值。
1728
1729**起始版本:** 11
1730
1731
1732**参数:**
1733
1734| 参数项 | 描述 |
1735| -- | -- |
1736| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1737| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) description | 可选的JSVM_Value,它指的是要设置为符号描述的JavaScript string。 |
1738| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript symbol的JSVM_Value。 |
1739
1740**返回:**
1741
1742| 类型 | 说明 |
1743| -- | -- |
1744| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
1745
1746### OH_JSVM_SymbolFor()
1747
1748```
1749JSVM_EXTERN JSVM_Status OH_JSVM_SymbolFor(JSVM_Env env,const char* utf8description,size_t length,JSVM_Value* result)
1750```
1751
1752**描述**
1753
1754在全局注册表中搜索具有给定描述的现有符号。如果该符号已经存在,它将被返回,否则将在注册表中创建一个新符号。
1755
1756**起始版本:** 11
1757
1758
1759**参数:**
1760
1761| 参数项 | 描述 |
1762| -- | -- |
1763| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1764| const char* utf8description | UTF-8 C 字符串,表示用作符号描述的文本。 |
1765| size_t length | 描述字符串的长度,以字节为单位。如果字符串以null结尾,则为JSVM_AUTO_LENGTH。 |
1766| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript 符号的JSVM_Value。 |
1767
1768**返回:**
1769
1770| 类型 | 说明 |
1771| -- | -- |
1772| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1773
1774### OH_JSVM_CreateTypedarray()
1775
1776```
1777JSVM_EXTERN JSVM_Status OH_JSVM_CreateTypedarray(JSVM_Env env,JSVM_TypedarrayType type,size_t length,JSVM_Value arraybuffer,size_t byteOffset,JSVM_Value* result)
1778```
1779
1780**描述**
1781
1782基于已有的ArrayBuffer对象,创建一个JavaScript TypedArray对象。TypedArray对象在底层数据缓冲区上提供了一个类似数组的视图,其中每个元素都具有相同的底层二进制标量数据类型。要求:length * 元素标量byte值 + byteOffset 不大于传入数组的ByteLength(),否则抛出范围错误(RangeError)。
1783
1784**起始版本:** 11
1785
1786
1787**参数:**
1788
1789| 参数项 | 描述 |
1790| -- | -- |
1791| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1792| [JSVM_TypedarrayType](capi-jsvm-types-h.md#jsvm_typedarraytype) type | TypedArray中元素的标量数据类型。 |
1793| size_t length | TypedArray中的元素个数。 |
1794| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) arraybuffer | ArrayBuffer是类型化数组的基础。 |
1795| size_t byteOffset | ArrayBuffer中开始投影TypedArray的字节偏移量。 |
1796| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript TypedArray的JSVM_Value。 |
1797
1798**返回:**
1799
1800| 类型 | 说明 |
1801| -- | -- |
1802| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
1803
1804### OH_JSVM_CreateDataview()
1805
1806```
1807JSVM_EXTERN JSVM_Status OH_JSVM_CreateDataview(JSVM_Env env,size_t length,JSVM_Value arraybuffer,size_t byteOffset,JSVM_Value* result)
1808```
1809
1810**描述**
1811
1812基于已有的ArrayBuffer对象,创建一个JavaScript DataView对象。DataView对象在底层数据缓冲区上提供了一个类似数组的视图,其中的元素可以具有不同的大小和类型。要求:二进制的length + byteOffset不大于传入数组的大小(byte数)。否则,抛出范围错误(RangeError)。
1813
1814**起始版本:** 11
1815
1816
1817**参数:**
1818
1819| 参数项 | 描述 |
1820| -- | -- |
1821| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1822| size_t length | DataView中的元素个数。 |
1823| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) arraybuffer | 位于DataView底层的ArrayBuffer。 |
1824| size_t byteOffset | ArrayBuffer中的字节偏移量,指示投影DataView的开始位置。 |
1825| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript DataView对象的JSVM_Value。 |
1826
1827**返回:**
1828
1829| 类型 | 说明 |
1830| -- | -- |
1831| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
1832
1833### OH_JSVM_CreateInt32()
1834
1835```
1836JSVM_EXTERN JSVM_Status OH_JSVM_CreateInt32(JSVM_Env env,int32_t value,JSVM_Value* result)
1837```
1838
1839**描述**
1840
1841将一个C int32_t类型值转换为JavaScript number类型值。
1842
1843**起始版本:** 11
1844
1845
1846**参数:**
1847
1848| 参数项 | 描述 |
1849| -- | -- |
1850| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1851| int32_t value | 要在JavaScript中表示的整数值。 |
1852| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript number类型的JSVM_Value。 |
1853
1854**返回:**
1855
1856| 类型 | 说明 |
1857| -- | -- |
1858| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1859
1860### OH_JSVM_CreateUint32()
1861
1862```
1863JSVM_EXTERN JSVM_Status OH_JSVM_CreateUint32(JSVM_Env env,uint32_t value,JSVM_Value* result)
1864```
1865
1866**描述**
1867
1868将一个C uint32_t类型值转换为JavaScript number类型值。
1869
1870**起始版本:** 11
1871
1872
1873**参数:**
1874
1875| 参数项 | 描述 |
1876| -- | -- |
1877| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1878| uint32_t value | 要在JavaScript中表示的无符号整数值。 |
1879| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript number类型的JSVM_Value。 |
1880
1881**返回:**
1882
1883| 类型 | 说明 |
1884| -- | -- |
1885| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1886
1887### OH_JSVM_CreateInt64()
1888
1889```
1890JSVM_EXTERN JSVM_Status OH_JSVM_CreateInt64(JSVM_Env env,int64_t value,JSVM_Value* result)
1891```
1892
1893**描述**
1894
1895将一个C int64_t类型值转换为JavaScript number类型值。
1896
1897**起始版本:** 11
1898
1899
1900**参数:**
1901
1902| 参数项 | 描述 |
1903| -- | -- |
1904| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1905| int64_t value | 要在JavaScript中表示的整数值。 |
1906| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript number类型的JSVM_Value。 |
1907
1908**返回:**
1909
1910| 类型 | 说明 |
1911| -- | -- |
1912| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1913
1914### OH_JSVM_CreateDouble()
1915
1916```
1917JSVM_EXTERN JSVM_Status OH_JSVM_CreateDouble(JSVM_Env env,double value,JSVM_Value* result)
1918```
1919
1920**描述**
1921
1922将一个C double类型值转换为JavaScript number类型值。
1923
1924**起始版本:** 11
1925
1926
1927**参数:**
1928
1929| 参数项 | 描述 |
1930| -- | -- |
1931| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1932| double value | 要在JavaScript中表现的双精度值。 |
1933| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript number类型的JSVM_Value。 |
1934
1935**返回:**
1936
1937| 类型 | 说明 |
1938| -- | -- |
1939| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1940
1941### OH_JSVM_CreateBigintInt64()
1942
1943```
1944JSVM_EXTERN JSVM_Status OH_JSVM_CreateBigintInt64(JSVM_Env env,int64_t value,JSVM_Value* result)
1945```
1946
1947**描述**
1948
1949将一个C int64_t类型值转换为JavaScript BigInt类型值。
1950
1951**起始版本:** 11
1952
1953
1954**参数:**
1955
1956| 参数项 | 描述 |
1957| -- | -- |
1958| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1959| int64_t value | 要在JavaScript中表现的整数值。 |
1960| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript BigInt类型的JSVM_Value。 |
1961
1962**返回:**
1963
1964| 类型 | 说明 |
1965| -- | -- |
1966| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1967
1968### OH_JSVM_CreateBigintUint64()
1969
1970```
1971JSVM_EXTERN JSVM_Status OH_JSVM_CreateBigintUint64(JSVM_Env env,uint64_t value,JSVM_Value* result)
1972```
1973
1974**描述**
1975
1976将一个C uint64_t类型值转换为JavaScript BigInt类型值。
1977
1978**起始版本:** 11
1979
1980
1981**参数:**
1982
1983| 参数项 | 描述 |
1984| -- | -- |
1985| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
1986| uint64_t value | 要在JavaScript中表示的无符号整数值。 |
1987| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript BigInt类型的JSVM_Value。 |
1988
1989**返回:**
1990
1991| 类型 | 说明 |
1992| -- | -- |
1993| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
1994
1995### OH_JSVM_CreateBigintWords()
1996
1997```
1998JSVM_EXTERN JSVM_Status OH_JSVM_CreateBigintWords(JSVM_Env env,int signBit,size_t wordCount,const uint64_t* words,JSVM_Value* result)
1999```
2000
2001**描述**
2002
2003将一组64位无符号比特位转换为单个BigInt值。
2004
2005**起始版本:** 11
2006
2007
2008**参数:**
2009
2010| 参数项 | 描述 |
2011| -- | -- |
2012| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2013| int signBit | 确定生成的BigInt是正数还是负数。 |
2014| size_t wordCount | words数组的长度。 |
2015| const uint64_t* words | uint64_t little-endian 64位字数组。 |
2016| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript BigInt类型的JSVM_Value。 |
2017
2018**返回:**
2019
2020| 类型 | 说明 |
2021| -- | -- |
2022| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
2023
2024### OH_JSVM_CreateStringLatin1()
2025
2026```
2027JSVM_EXTERN JSVM_Status OH_JSVM_CreateStringLatin1(JSVM_Env env,const char* str,size_t length,JSVM_Value* result)
2028```
2029
2030**描述**
2031
2032将ISO-8859-1编码的C字符串转换为JavaScript字符串值。复制原生字符串。
2033
2034**起始版本:** 11
2035
2036
2037**参数:**
2038
2039| 参数项 | 描述 |
2040| -- | -- |
2041| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2042| const char* str | 表示ISO-8859-1编码的字符串的字符缓冲区。 |
2043| size_t length | 字符串的长度,以字节为单位。如果它以null结尾,则为JSVM_AUTO_LENGTH。 |
2044| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript字符串的JSVM_Value。 |
2045
2046**返回:**
2047
2048| 类型 | 说明 |
2049| -- | -- |
2050| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
2051
2052### OH_JSVM_CreateStringUtf16()
2053
2054```
2055JSVM_EXTERN JSVM_Status OH_JSVM_CreateStringUtf16(JSVM_Env env,const char16_t* str,size_t length,JSVM_Value* result)
2056```
2057
2058**描述**
2059
2060将UTF16-LE编码的C字符串转换为JavaScript字符串值。复制原生字符串。
2061
2062**起始版本:** 11
2063
2064
2065**参数:**
2066
2067| 参数项 | 描述 |
2068| -- | -- |
2069| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2070| const char16_t* str | 表示UTF16-LE编码的字符串的字符缓冲区。 |
2071| size_t length | 以两字节代码单元表示的字符串长度,如果它以null终止,则为JSVM_AUTO_LENGTH。 |
2072| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript string的JSVM_Value。 |
2073
2074**返回:**
2075
2076| 类型 | 说明 |
2077| -- | -- |
2078| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
2079
2080### OH_JSVM_CreateStringUtf8()
2081
2082```
2083JSVM_EXTERN JSVM_Status OH_JSVM_CreateStringUtf8(JSVM_Env env,const char* str,size_t length,JSVM_Value* result)
2084```
2085
2086**描述**
2087
2088用UTF8编码的C字符串创建JavaScript字符串值。复制原生字符串。
2089
2090**起始版本:** 11
2091
2092
2093**参数:**
2094
2095| 参数项 | 描述 |
2096| -- | -- |
2097| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2098| const char* str | 表示UTF8编码字符串的字符缓冲区。 |
2099| size_t length | 字符串的长度,以字节为单位。如果字符串以null结尾,则为JSVM_AUTO_LENGTH。 |
2100| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript字符串的JSVM_Value。 |
2101
2102**返回:**
2103
2104| 类型 | 说明 |
2105| -- | -- |
2106| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
2107
2108### OH_JSVM_GetArrayLength()
2109
2110```
2111JSVM_EXTERN JSVM_Status OH_JSVM_GetArrayLength(JSVM_Env env,JSVM_Value value,uint32_t* result)
2112```
2113
2114**描述**
2115
2116返回数组的长度。
2117
2118**起始版本:** 11
2119
2120
2121**参数:**
2122
2123| 参数项 | 描述 |
2124| -- | -- |
2125| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2126| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表查询长度的JavaScript Array。 |
2127| uint32_t* result | uint32代表数组的长度。 |
2128
2129**返回:**
2130
2131| 类型 | 说明 |
2132| -- | -- |
2133| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_ARRAY_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是Array类型。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
2134
2135### OH_JSVM_GetArraybufferInfo()
2136
2137```
2138JSVM_EXTERN JSVM_Status OH_JSVM_GetArraybufferInfo(JSVM_Env env,JSVM_Value arraybuffer,void** data,size_t* byteLength)
2139```
2140
2141**描述**
2142
2143用于检索ArrayBuffer的底层数据缓冲区及其长度。
2144
2145**起始版本:** 11
2146
2147
2148**参数:**
2149
2150| 参数项 | 描述 |
2151| -- | -- |
2152| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2153| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) arraybuffer | 代表被查询的ArrayBuffer。 |
2154| void** data | ArrayBuffer的底层数据缓冲区。如果byte_length为0,则该值可能为NULL或任何其他指针值。 |
2155| size_t* byteLength | 底层数据缓冲区的字节长度。 |
2156
2157**返回:**
2158
2159| 类型 | 说明 |
2160| -- | -- |
2161| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。 |
2162
2163### OH_JSVM_GetPrototype()
2164
2165```
2166JSVM_EXTERN JSVM_Status OH_JSVM_GetPrototype(JSVM_Env env,JSVM_Value object,JSVM_Value* result)
2167```
2168
2169**描述**
2170
2171返回对象的原型。
2172
2173**起始版本:** 11
2174
2175
2176**参数:**
2177
2178| 参数项 | 描述 |
2179| -- | -- |
2180| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2181| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 表示待返回其原型的JavaScript object。这将返回Object.getPrototypeOf的等价值(与函数的prototype属性不同)。 |
2182| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示给定对象的原型。 |
2183
2184**返回:**
2185
2186| 类型 | 说明 |
2187| -- | -- |
2188| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
2189
2190### OH_JSVM_GetTypedarrayInfo()
2191
2192```
2193JSVM_EXTERN JSVM_Status OH_JSVM_GetTypedarrayInfo(JSVM_Env env,JSVM_Value typedarray,JSVM_TypedarrayType* type,size_t* length,void** data,JSVM_Value* arraybuffer,size_t* byteOffset)
2194```
2195
2196**描述**
2197
2198返回类型化数组的各种属性。如果不需要该属性,则任何输出参数都可以是 NULL。
2199
2200**起始版本:** 11
2201
2202
2203**参数:**
2204
2205| 参数项 | 描述 |
2206| -- | -- |
2207| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2208| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) typedarray | 表示要查询其属性的TypedArray。 |
2209| [JSVM_TypedarrayType](capi-jsvm-types-h.md#jsvm_typedarraytype)* type | TypedArray中元素的标量数据类型。 |
2210| size_t* length | TypedArray中的元素数。 |
2211| void** data | TypedArray底层的数据缓冲区由byte_offset值调整,使其指向TypedArray中的第一个元素。如果数组的长度是0,这可能是NULL或任何其他指针值。 |
2212| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* arraybuffer | 位于TypedArray下的ArrayBuffer。 |
2213| size_t* byteOffset | 数组的第一个元素所在的基础原生数组中的字节偏移量。data 参数的值已经过调整,因此data指向数组中的第一个元素。因此,原生数组的第一个字节将位于data - byte_offset。 |
2214
2215**返回:**
2216
2217| 类型 | 说明 |
2218| -- | -- |
2219| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。 |
2220
2221### OH_JSVM_GetDataviewInfo()
2222
2223```
2224JSVM_EXTERN JSVM_Status OH_JSVM_GetDataviewInfo(JSVM_Env env,JSVM_Value dataview,size_t* bytelength,void** data,JSVM_Value* arraybuffer,size_t* byteOffset)
2225```
2226
2227**描述**
2228
2229返回DataView的各种属性。如果不需要某一属性,则任何出参都可以设置为NULL。
2230
2231**起始版本:** 11
2232
2233
2234**参数:**
2235
2236| 参数项 | 描述 |
2237| -- | -- |
2238| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2239| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) dataview |  表示要查询其属性的DataView。 |
2240| size_t* bytelength | DataView中的字节个数。 |
2241| void** data | DataView下的数据缓冲区。如果bytelength是0则可能是NULL或任何其他指针值。 |
2242| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* arraybuffer | ArrayBuffer是DataView的基础。 |
2243| size_t* byteOffset | 开始投影DataView的数据缓冲区中的字节偏移量。 |
2244
2245**返回:**
2246
2247| 类型 | 说明 |
2248| -- | -- |
2249| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数非外部的JSVM_Value。 |
2250
2251### OH_JSVM_GetDateValue()
2252
2253```
2254JSVM_EXTERN JSVM_Status OH_JSVM_GetDateValue(JSVM_Env env,JSVM_Value value,double* result)
2255```
2256
2257**描述**
2258
2259返回与给定的JavaScript Date时间值等价的C双精度基础类型值。如果调用成功,返回JSVM_OK。如果传入一个非JavaScript Date类型的JSVM_Value,返回JSVM_DATA_EXPECTED。
2260
2261**起始版本:** 11
2262
2263
2264**参数:**
2265
2266| 参数项 | 描述 |
2267| -- | -- |
2268| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2269| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表一个JavaScript Date。 |
2270| double* result | 作为double的时间值表示为自1970年1月1日UTC午夜以来的毫秒数。 |
2271
2272**返回:**
2273
2274| 类型 | 说明 |
2275| -- | -- |
2276| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_DATE_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入参数不是Date类型。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
2277
2278### OH_JSVM_GetValueBool()
2279
2280```
2281JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBool(JSVM_Env env,JSVM_Value value,bool* result)
2282```
2283
2284**描述**
2285
2286返回与给定的JavaScript Boolean等价的C布尔基础类型值。
2287
2288**起始版本:** 11
2289
2290
2291**参数:**
2292
2293| 参数项 | 描述 |
2294| -- | -- |
2295| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2296| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表输入的JavaScript Boolean对象。 |
2297| bool* result | 返回与给定JavaScript Boolean对象等价的bool值,value对象值为true则result为true,反之亦然。 |
2298
2299**返回:**
2300
2301| 类型 | 说明 |
2302| -- | -- |
2303| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_BOOLEAN_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是boolean类型。 |
2304
2305### OH_JSVM_GetValueDouble()
2306
2307```
2308JSVM_EXTERN JSVM_Status OH_JSVM_GetValueDouble(JSVM_Env env,JSVM_Value value,double* result)
2309```
2310
2311**描述**
2312
2313返回与给定的JavaScript number等价的C双精度基础类型值。
2314
2315**起始版本:** 11
2316
2317
2318**参数:**
2319
2320| 参数项 | 描述 |
2321| -- | -- |
2322| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2323| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript number。 |
2324| double* result | 给定的JavaScript number的C双精度基础类型等价值。 |
2325
2326**返回:**
2327
2328| 类型 | 说明 |
2329| -- | -- |
2330| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_NUMBER_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是number类型。 |
2331
2332### OH_JSVM_GetValueBigintInt64()
2333
2334```
2335JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBigintInt64(JSVM_Env env,JSVM_Value value,int64_t* result,bool* lossless)
2336```
2337
2338**描述**
2339
2340返回与给定的JavaScript BigInt等价的C int64_t基础类型值。如果需要,它将截断该值,将lossless设置为false。
2341
2342**起始版本:** 11
2343
2344
2345**参数:**
2346
2347| 参数项 | 描述 |
2348| -- | -- |
2349| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2350| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript BigInt。 |
2351| int64_t* result | 给定的JavaScript BigInt的C int64_t基础类型等价值。 |
2352| bool* lossless | 指示BigInt值是否已无损转换,true为是,false为否。 |
2353
2354**返回:**
2355
2356| 类型 | 说明 |
2357| -- | -- |
2358| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_BIGINT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是BitInt类型。 |
2359
2360### OH_JSVM_GetValueBigintUint64()
2361
2362```
2363JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBigintUint64(JSVM_Env env,JSVM_Value value,uint64_t* result,bool* lossless)
2364```
2365
2366**描述**
2367
2368返回与给定的JavaScript BigInt等价的C uint64_t基础类型值。如果需要,它将截断该值,将lossless设置为false。
2369
2370**起始版本:** 11
2371
2372
2373**参数:**
2374
2375| 参数项 | 描述 |
2376| -- | -- |
2377| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2378| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript BigInt。 |
2379| uint64_t* result | 给定的JavaScript BigInt的C uint64_t基础类型等价值。 |
2380| bool* lossless | 指示BigInt值是否已无损转换,true为是,false为否。 |
2381
2382**返回:**
2383
2384| 类型 | 说明 |
2385| -- | -- |
2386| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_BIGINT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是BitInt类型。 |
2387
2388### OH_JSVM_GetValueBigintWords()
2389
2390```
2391JSVM_EXTERN JSVM_Status OH_JSVM_GetValueBigintWords(JSVM_Env env,JSVM_Value value,int* signBit,size_t* wordCount,uint64_t* words)
2392```
2393
2394**描述**
2395
2396将单个BigInt值转换为符号位、64位小端数组和数组中的元素数。signBit和words参数可以都设置为NULL。这种情况下,只获取wordCount。
2397
2398**起始版本:** 11
2399
2400
2401**参数:**
2402
2403| 参数项 | 描述 |
2404| -- | -- |
2405| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2406| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript BigInt。 |
2407| int* signBit | 表示JavaScript BigInt是正数还是负数的整数。 |
2408| size_t* wordCount | 必须初始化为words数组的长度。返回后,将被设置为存储此BigInt所需的实际字数。 |
2409| uint64_t* words | 指向预分配的64位字数组的指针。 |
2410
2411**返回:**
2412
2413| 类型 | 说明 |
2414| -- | -- |
2415| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_BIGINT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是BitInt类型。 |
2416
2417### OH_JSVM_GetValueExternal()
2418
2419```
2420JSVM_EXTERN JSVM_Status OH_JSVM_GetValueExternal(JSVM_Env env,JSVM_Value value,void** result)
2421```
2422
2423**描述**
2424
2425检索之前传递给OH_JSVM_CreateExternal()的外部数据指针。
2426
2427**起始版本:** 11
2428
2429
2430**参数:**
2431
2432| 参数项 | 描述 |
2433| -- | -- |
2434| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2435| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript外部值。 |
2436| void** result | 指向被JavaScript外部值封装的数据的指针。 |
2437
2438**返回:**
2439
2440| 类型 | 说明 |
2441| -- | -- |
2442| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数非外部的JSVM_Value。 |
2443
2444### OH_JSVM_GetValueInt32()
2445
2446```
2447JSVM_EXTERN JSVM_Status OH_JSVM_GetValueInt32(JSVM_Env env,JSVM_Value value,int32_t* result)
2448```
2449
2450**描述**
2451
2452返回与给定的JavaScript number等价的C int32基础类型值。
2453
2454**起始版本:** 11
2455
2456
2457**参数:**
2458
2459| 参数项 | 描述 |
2460| -- | -- |
2461| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2462| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript number。 |
2463| int32_t* result | 给定的JavaScript number的C int32基础类型等价值。 |
2464
2465**返回:**
2466
2467| 类型 | 说明 |
2468| -- | -- |
2469| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_NUMBER_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是number类型。 |
2470
2471### OH_JSVM_GetValueInt64()
2472
2473```
2474JSVM_EXTERN JSVM_Status OH_JSVM_GetValueInt64(JSVM_Env env,JSVM_Value value,int64_t* result)
2475```
2476
2477**描述**
2478
2479返回与给定的JavaScript number等价的C int64基础类型值。
2480
2481**起始版本:** 11
2482
2483
2484**参数:**
2485
2486| 参数项 | 描述 |
2487| -- | -- |
2488| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2489| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript number。 |
2490| int64_t* result | 给定的JavaScript number的C int64基础类型等价值。 |
2491
2492**返回:**
2493
2494| 类型 | 说明 |
2495| -- | -- |
2496| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_NUMBER_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是number类型。 |
2497
2498### OH_JSVM_GetValueStringLatin1()
2499
2500```
2501JSVM_EXTERN JSVM_Status OH_JSVM_GetValueStringLatin1(JSVM_Env env,JSVM_Value value,char* buf,size_t bufsize,size_t* result)
2502```
2503
2504**描述**
2505
2506返回与传入值对应的ISO-8859-1编码字符串。
2507
2508**起始版本:** 11
2509
2510
2511**参数:**
2512
2513| 参数项 | 描述 |
2514| -- | -- |
2515| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2516| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript number。 |
2517| char* buf | 写入ISO-8859-1编码字符串的缓冲区。如果传入NULL,则将在result中返回字符串的长度(以字节为单位,不包括null结束符)。 |
2518| size_t bufsize | 目的缓冲区大小。当大小不够时,返回的字符串将被截断并以null结尾。 |
2519| size_t* result | 复制到缓冲区中的字节数,不包括空终止符。 |
2520
2521**返回:**
2522
2523| 类型 | 说明 |
2524| -- | -- |
2525| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
2526
2527### OH_JSVM_GetValueStringUtf8()
2528
2529```
2530JSVM_EXTERN JSVM_Status OH_JSVM_GetValueStringUtf8(JSVM_Env env,JSVM_Value value,char* buf,size_t bufsize,size_t* result)
2531```
2532
2533**描述**
2534
2535返回与传入值对应的UTF8编码字符串。
2536
2537**起始版本:** 11
2538
2539
2540**参数:**
2541
2542| 参数项 | 描述 |
2543| -- | -- |
2544| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2545| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript字符串。 |
2546| char* buf | 将UTF8编码的字符串写入的缓冲区。如果传入NULL,则在result中返回以字节为单位的字符串长度,不包括空终止符。 |
2547| size_t bufsize | 目标缓冲区的大小。当此值不足时,返回的字符串将被截断并以null终止。 |
2548| size_t* result | 复制到缓冲区的字节数,不包括null结束符。 |
2549
2550**返回:**
2551
2552| 类型 | 说明 |
2553| -- | -- |
2554| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
2555
2556### OH_JSVM_GetValueStringUtf16()
2557
2558```
2559JSVM_EXTERN JSVM_Status OH_JSVM_GetValueStringUtf16(JSVM_Env env,JSVM_Value value,char16_t* buf,size_t bufsize,size_t* result)
2560```
2561
2562**描述**
2563
2564查询与传入值对应的UTF16编码字符串。
2565
2566**起始版本:** 11
2567
2568
2569**参数:**
2570
2571| 参数项 | 描述 |
2572| -- | -- |
2573| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2574| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript字符串。 |
2575| char16_t* buf | 将UTF16-LE编码字符串写入的缓冲区。如果传入NULL,则返回字符串的2字节代码单元长度,不包括空终止符。 |
2576| size_t bufsize | 目标缓冲区的大小。当此值不足时,返回的字符串将被截断并以null终止。 |
2577| size_t* result | 复制到缓冲区中的2字节代码单元数,不包括空终止符。 |
2578
2579**返回:**
2580
2581| 类型 | 说明 |
2582| -- | -- |
2583| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。 |
2584
2585### OH_JSVM_GetValueUint32()
2586
2587```
2588JSVM_EXTERN JSVM_Status OH_JSVM_GetValueUint32(JSVM_Env env,JSVM_Value value,uint32_t* result)
2589```
2590
2591**描述**
2592
2593返回与给定的JavaScript number等价的C uint_32基础类型值。
2594
2595**起始版本:** 11
2596
2597
2598**参数:**
2599
2600| 参数项 | 描述 |
2601| -- | -- |
2602| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2603| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 代表JavaScript number。 |
2604| uint32_t* result | 将给定的JSVM_Value等效为uint32_t 的C基础类型。 |
2605
2606**返回:**
2607
2608| 类型 | 说明 |
2609| -- | -- |
2610| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_NUMBER_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是number类型。 |
2611
2612### OH_JSVM_GetBoolean()
2613
2614```
2615JSVM_EXTERN JSVM_Status OH_JSVM_GetBoolean(JSVM_Env env,bool value,JSVM_Value* result)
2616```
2617
2618**描述**
2619
2620返回表示给定布尔值的JavaScript单例对象。
2621
2622**起始版本:** 11
2623
2624
2625**参数:**
2626
2627| 参数项 | 描述 |
2628| -- | -- |
2629| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2630| bool value | 要检索的布尔值,取值为true或false。 |
2631| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示待检索的JavaScript Boolean单例。 |
2632
2633**返回:**
2634
2635| 类型 | 说明 |
2636| -- | -- |
2637| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2638
2639### OH_JSVM_GetGlobal()
2640
2641```
2642JSVM_EXTERN JSVM_Status OH_JSVM_GetGlobal(JSVM_Env env,JSVM_Value* result)
2643```
2644
2645**描述**
2646
2647返回global对象。
2648
2649**起始版本:** 11
2650
2651
2652**参数:**
2653
2654| 参数项 | 描述 |
2655| -- | -- |
2656| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2657| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript global对象。 |
2658
2659**返回:**
2660
2661| 类型 | 说明 |
2662| -- | -- |
2663| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2664
2665### OH_JSVM_GetNull()
2666
2667```
2668JSVM_EXTERN JSVM_Status OH_JSVM_GetNull(JSVM_Env env,JSVM_Value* result)
2669```
2670
2671**描述**
2672
2673返回null对象。
2674
2675**起始版本:** 11
2676
2677
2678**参数:**
2679
2680| 参数项 | 描述 |
2681| -- | -- |
2682| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2683| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript null对象。 |
2684
2685**返回:**
2686
2687| 类型 | 说明 |
2688| -- | -- |
2689| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2690
2691### OH_JSVM_GetUndefined()
2692
2693```
2694JSVM_EXTERN JSVM_Status OH_JSVM_GetUndefined(JSVM_Env env,JSVM_Value* result)
2695```
2696
2697**描述**
2698
2699返回Undefined对象。
2700
2701**起始版本:** 11
2702
2703
2704**参数:**
2705
2706| 参数项 | 描述 |
2707| -- | -- |
2708| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2709| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript undefined值。 |
2710
2711**返回:**
2712
2713| 类型 | 说明 |
2714| -- | -- |
2715| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2716
2717### OH_JSVM_CoerceToBool()
2718
2719```
2720JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToBool(JSVM_Env env,JSVM_Value value,JSVM_Value* result)
2721```
2722
2723**描述**
2724
2725实现抽象操作ToBoolean()。
2726
2727**起始版本:** 11
2728
2729
2730**参数:**
2731
2732| 参数项 | 描述 |
2733| -- | -- |
2734| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2735| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要强制转换的JavaScript值。 |
2736| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表强制的JavaScript Boolean。 |
2737
2738**返回:**
2739
2740| 类型 | 说明 |
2741| -- | -- |
2742| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
2743
2744### OH_JSVM_CoerceToNumber()
2745
2746```
2747JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToNumber(JSVM_Env env,JSVM_Value value,JSVM_Value* result)
2748```
2749
2750**描述**
2751
2752实现抽象操作ToNumber()。如果传入的值是对象,则函数可能会运行JavaScript代码。
2753
2754**起始版本:** 11
2755
2756
2757**参数:**
2758
2759| 参数项 | 描述 |
2760| -- | -- |
2761| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2762| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要强制转换的JavaScript值。 |
2763| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表强制的JavaScript number。 |
2764
2765**返回:**
2766
2767| 类型 | 说明 |
2768| -- | -- |
2769| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_NUMBER_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 如果传入的JavaScript值无法转换成Number。 |
2770
2771### OH_JSVM_CoerceToObject()
2772
2773```
2774JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToObject(JSVM_Env env,JSVM_Value value,JSVM_Value* result)
2775```
2776
2777**描述**
2778
2779实现抽象操作ToObject()。
2780
2781**起始版本:** 11
2782
2783
2784**参数:**
2785
2786| 参数项 | 描述 |
2787| -- | -- |
2788| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2789| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要强制转换的JavaScript值。 |
2790| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表强制的JavaScript object。 |
2791
2792**返回:**
2793
2794| 类型 | 说明 |
2795| -- | -- |
2796| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_OBJECT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 如果传入的JavaScript值无法转换成Object。 |
2797
2798### OH_JSVM_CoerceToString()
2799
2800```
2801JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToString(JSVM_Env env,JSVM_Value value,JSVM_Value* result)
2802```
2803
2804**描述**
2805
2806实现抽象操作ToString()。如果传入的值是对象,则函数可能会运行JavaScript代码。
2807
2808**起始版本:** 11
2809
2810
2811**参数:**
2812
2813| 参数项 | 描述 |
2814| -- | -- |
2815| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2816| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要强制转换的JavaScript值。 |
2817| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表强制的JavaScript string。 |
2818
2819**返回:**
2820
2821| 类型 | 说明 |
2822| -- | -- |
2823| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 如果传入的JavaScript值无法转换成String。 |
2824
2825### OH_JSVM_Typeof()
2826
2827```
2828JSVM_EXTERN JSVM_Status OH_JSVM_Typeof(JSVM_Env env,JSVM_Value value,JSVM_ValueType* result)
2829```
2830
2831**描述**
2832
2833提供类似于在定义的对象上调用typeof运算符的行为。不同点在于,该函数支持检测外部值;它将null检测为单独的类型,而ECMAScript typeof将用于检测object。如果value的类型无效,则返回错误。
2834
2835**起始版本:** 11
2836
2837
2838**参数:**
2839
2840| 参数项 | 描述 |
2841| -- | -- |
2842| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2843| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要查询其类型的JavaScript值。 |
2844| [JSVM_ValueType](capi-jsvm-types-h.md#jsvm_valuetype)* result | JavaScript值的类型。 |
2845
2846**返回:**
2847
2848| 类型 | 说明 |
2849| -- | -- |
2850| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。 |
2851
2852### OH_JSVM_Instanceof()
2853
2854```
2855JSVM_EXTERN JSVM_Status OH_JSVM_Instanceof(JSVM_Env env,JSVM_Value object,JSVM_Value constructor,bool* result)
2856```
2857
2858**描述**
2859
2860提供类似于在对象上调用instanceof运算符的行为。
2861
2862**起始版本:** 11
2863
2864
2865**参数:**
2866
2867| 参数项 | 描述 |
2868| -- | -- |
2869| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2870| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 要检查的JavaScript值。 |
2871| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) constructor | 要检查的构造函数的JavaScript函数对象。 |
2872| bool* result | 如果object instanceof constructor为true,则设置为true的布尔值,反之亦然。 |
2873
2874**返回:**
2875
2876| 类型 | 说明 |
2877| -- | -- |
2878| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_FUNCTION_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是Function类型。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
2879
2880### OH_JSVM_IsArray()
2881
2882```
2883JSVM_EXTERN JSVM_Status OH_JSVM_IsArray(JSVM_Env env,JSVM_Value value,bool* result)
2884```
2885
2886**描述**
2887
2888提供类似于在对象上调用IsArray的行为。
2889
2890**起始版本:** 11
2891
2892
2893**参数:**
2894
2895| 参数项 | 描述 |
2896| -- | -- |
2897| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2898| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JavaScript值。 |
2899| bool* result | 表示给定的对象是否为数组,true为是,false为否。 |
2900
2901**返回:**
2902
2903| 类型 | 说明 |
2904| -- | -- |
2905| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2906
2907### OH_JSVM_IsArraybuffer()
2908
2909```
2910JSVM_EXTERN JSVM_Status OH_JSVM_IsArraybuffer(JSVM_Env env,JSVM_Value value,bool* result)
2911```
2912
2913**描述**
2914
2915检查传入的对象是否为ArrayBuffer。
2916
2917**起始版本:** 11
2918
2919
2920**参数:**
2921
2922| 参数项 | 描述 |
2923| -- | -- |
2924| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2925| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JavaScript值。 |
2926| bool* result | 表示指定的对象是否为ArrayBuffer,true为是,false为否。 |
2927
2928**返回:**
2929
2930| 类型 | 说明 |
2931| -- | -- |
2932| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2933
2934### OH_JSVM_IsDate()
2935
2936```
2937JSVM_EXTERN JSVM_Status OH_JSVM_IsDate(JSVM_Env env,JSVM_Value value,bool* isDate)
2938```
2939
2940**描述**
2941
2942检查传入的Object是否为日期。
2943
2944**起始版本:** 11
2945
2946
2947**参数:**
2948
2949| 参数项 | 描述 |
2950| -- | -- |
2951| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2952| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JavaScript值。 |
2953| bool* isDate | 给定的JSVM_Value是否表示JavaScript Date对象,true为是,false为否。 |
2954
2955**返回:**
2956
2957| 类型 | 说明 |
2958| -- | -- |
2959| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2960
2961### OH_JSVM_IsTypedarray()
2962
2963```
2964JSVM_EXTERN JSVM_Status OH_JSVM_IsTypedarray(JSVM_Env env,JSVM_Value value,bool* result)
2965```
2966
2967**描述**
2968
2969检查传入的Object是否为类型化数组。
2970
2971**起始版本:** 11
2972
2973
2974**参数:**
2975
2976| 参数项 | 描述 |
2977| -- | -- |
2978| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
2979| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JavaScript值。 |
2980| bool* result | 给定的JSVM_Value是否代表TypedArray,true为是,false为否。 |
2981
2982**返回:**
2983
2984| 类型 | 说明 |
2985| -- | -- |
2986| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
2987
2988### OH_JSVM_IsDataview()
2989
2990```
2991JSVM_EXTERN JSVM_Status OH_JSVM_IsDataview(JSVM_Env env,JSVM_Value value,bool* result)
2992```
2993
2994**描述**
2995
2996检查传入的对象是否是DataView。
2997
2998**起始版本:** 11
2999
3000
3001**参数:**
3002
3003| 参数项 | 描述 |
3004| -- | -- |
3005| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3006| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JavaScript值。 |
3007| bool* result | 给定的JSVM_Value是否代表DataView,true为是,false为否。 |
3008
3009**返回:**
3010
3011| 类型 | 说明 |
3012| -- | -- |
3013| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
3014
3015### OH_JSVM_StrictEquals()
3016
3017```
3018JSVM_EXTERN JSVM_Status OH_JSVM_StrictEquals(JSVM_Env env,JSVM_Value lhs,JSVM_Value rhs,bool* result)
3019```
3020
3021**描述**
3022
3023提供类似调用严格相等算法的行为。
3024
3025**起始版本:** 11
3026
3027
3028**参数:**
3029
3030| 参数项 | 描述 |
3031| -- | -- |
3032| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3033| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) lhs | 待检查的JavaScript值。 |
3034| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) rhs | 要检查的JavaScript值。 |
3035| bool* result | 表示两个JSVM_Value对象是否严格相等(===),true为是,false为否。 |
3036
3037**返回:**
3038
3039| 类型 | 说明 |
3040| -- | -- |
3041| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3042
3043### OH_JSVM_Equals()
3044
3045```
3046JSVM_EXTERN JSVM_Status OH_JSVM_Equals(JSVM_Env env,JSVM_Value lhs,JSVM_Value rhs,bool* result)
3047```
3048
3049**描述**
3050
3051提供类似调用宽松相等算法的行为。无论JavaScript值类型如何,只要值相等,就返回true。
3052
3053**起始版本:** 12
3054
3055
3056**参数:**
3057
3058| 参数项 | 描述 |
3059| -- | -- |
3060| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3061| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) lhs | 待检查的JavaScript值。 |
3062| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) rhs | 要检查的JavaScript值。 |
3063| bool* result | 表示两个JSVM_Value对象是否宽松相等(==),true为是,false为否。 |
3064
3065**返回:**
3066
3067| 类型 | 说明 |
3068| -- | -- |
3069| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3070
3071### OH_JSVM_DetachArraybuffer()
3072
3073```
3074JSVM_EXTERN JSVM_Status OH_JSVM_DetachArraybuffer(JSVM_Env env,JSVM_Value arraybuffer)
3075```
3076
3077**描述**
3078
3079提供类似于调用ArrayBuffer detach操作的行为。
3080
3081**起始版本:** 11
3082
3083
3084**参数:**
3085
3086| 参数项 | 描述 |
3087| -- | -- |
3088| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3089| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) arraybuffer | 待分离的JavaScript ArrayBuffer。 |
3090
3091**返回:**
3092
3093| 类型 | 说明 |
3094| -- | -- |
3095| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         如果[JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_DETACHABLE_ARRAYBUFFER_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是可分析的ArrayBuffer。 |
3096
3097### OH_JSVM_IsDetachedArraybuffer()
3098
3099```
3100JSVM_EXTERN JSVM_Status OH_JSVM_IsDetachedArraybuffer(JSVM_Env env,JSVM_Value value,bool* result)
3101```
3102
3103**描述**
3104
3105提供类似调用ArrayBuffer IsDetachedBuffer操作的行为。
3106
3107**起始版本:** 11
3108
3109
3110**参数:**
3111
3112| 参数项 | 描述 |
3113| -- | -- |
3114| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3115| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JavaScript ArrayBuffer。 |
3116| bool* result | 表示ArrayBuffer是否被分离,true为是,false为否。 |
3117
3118**返回:**
3119
3120| 类型 | 说明 |
3121| -- | -- |
3122| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
3123
3124### OH_JSVM_GetPropertyNames()
3125
3126```
3127JSVM_EXTERN JSVM_Status OH_JSVM_GetPropertyNames(JSVM_Env env,JSVM_Value object,JSVM_Value* result)
3128```
3129
3130**描述**
3131
3132以字符数数组的形式返回object的可枚举属性的名称。key为符号的object的属性将不会被包含在内。
3133
3134**起始版本:** 11
3135
3136
3137**参数:**
3138
3139| 参数项 | 描述 |
3140| -- | -- |
3141| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3142| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待进行属性检索的对象。 |
3143| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示一个JavaScript值的数组,这些值表示对象的属性名称。可以使用OH_JSVM_GetArrayLength以及OH_JSVM_GetElement对结果进行迭代。 |
3144
3145**返回:**
3146
3147| 类型 | 说明 |
3148| -- | -- |
3149| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3150
3151### OH_JSVM_GetAllPropertyNames()
3152
3153```
3154JSVM_EXTERN JSVM_Status OH_JSVM_GetAllPropertyNames(JSVM_Env env,JSVM_Value object,JSVM_KeyCollectionMode keyMode,JSVM_KeyFilter keyFilter,JSVM_KeyConversion keyConversion,JSVM_Value* result)
3155```
3156
3157**描述**
3158
3159返回包含object所有可用属性名称的数组。
3160
3161**起始版本:** 11
3162
3163
3164**参数:**
3165
3166| 参数项 | 描述 |
3167| -- | -- |
3168| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3169| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 从中检索属性的对象。 |
3170| [JSVM_KeyCollectionMode](capi-jsvm-types-h.md#jsvm_keycollectionmode) keyMode | 是否也检索原型属性。 |
3171| [JSVM_KeyFilter](capi-jsvm-types-h.md#jsvm_keyfilter) keyFilter | 要检索哪些属性(可枚举/可读/可写)。 |
3172| [JSVM_KeyConversion](capi-jsvm-types-h.md#jsvm_keyconversion) keyConversion | 表示是否将编号的属性键转换为字符串。 |
3173| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示JavaScript值的数组,这些值表示对象的属性名称。可以使用OH_JSVM_GetArrayLength和OH_JSVM_GetElement对结果进行迭代。 |
3174
3175**返回:**
3176
3177| 类型 | 说明 |
3178| -- | -- |
3179| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3180
3181### OH_JSVM_SetProperty()
3182
3183```
3184JSVM_EXTERN JSVM_Status OH_JSVM_SetProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,JSVM_Value value)
3185```
3186
3187**描述**
3188
3189为传入的object设置名为key的属性。
3190
3191**起始版本:** 11
3192
3193
3194**参数:**
3195
3196| 参数项 | 描述 |
3197| -- | -- |
3198| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3199| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 将进行属性设置的对象。 |
3200| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) key | 待设置的属性名。 |
3201| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 属性值。 |
3202
3203**返回:**
3204
3205| 类型 | 说明 |
3206| -- | -- |
3207| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3208
3209### OH_JSVM_GetProperty()
3210
3211```
3212JSVM_EXTERN JSVM_Status OH_JSVM_GetProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,JSVM_Value* result)
3213```
3214
3215**描述**
3216
3217从传入的object中获取名为key的属性。
3218
3219**起始版本:** 11
3220
3221
3222**参数:**
3223
3224| 参数项 | 描述 |
3225| -- | -- |
3226| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3227| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 从中检索属性的对象。 |
3228| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) key | 要检索的属性的名称。 |
3229| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 属性值。 |
3230
3231**返回:**
3232
3233| 类型 | 说明 |
3234| -- | -- |
3235| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3236
3237### OH_JSVM_HasProperty()
3238
3239```
3240JSVM_EXTERN JSVM_Status OH_JSVM_HasProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,bool* result)
3241```
3242
3243**描述**
3244
3245检查传入的Object是否具有命名为key的属性。
3246
3247**起始版本:** 11
3248
3249
3250**参数:**
3251
3252| 参数项 | 描述 |
3253| -- | -- |
3254| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3255| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待查询的对象。 |
3256| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) key | 要检查其存在的属性的名称。 |
3257| bool* result | 该属性是否存在于对象上,true为是,false为否。 |
3258
3259**返回:**
3260
3261| 类型 | 说明 |
3262| -- | -- |
3263| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3264
3265### OH_JSVM_DeleteProperty()
3266
3267```
3268JSVM_EXTERN JSVM_Status OH_JSVM_DeleteProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,bool* result)
3269```
3270
3271**描述**
3272
3273尝试从object中删除名为key的属性。
3274
3275**起始版本:** 11
3276
3277
3278**参数:**
3279
3280| 参数项 | 描述 |
3281| -- | -- |
3282| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3283| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待查询的对象。 |
3284| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) key | 待删除的属性名。 |
3285| bool* result | 表示属性删除是否成功,true为是,false为否。result可以选择性地通过传递NULL来忽略。 |
3286
3287**返回:**
3288
3289| 类型 | 说明 |
3290| -- | -- |
3291| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3292
3293### OH_JSVM_HasOwnProperty()
3294
3295```
3296JSVM_EXTERN JSVM_Status OH_JSVM_HasOwnProperty(JSVM_Env env,JSVM_Value object,JSVM_Value key,bool* result)
3297```
3298
3299**描述**
3300
3301检查传入的Object是否具有名为key的属性。key必须是string或symbol,否则将抛出错误。JSVM-API不会执行任何数据类型之间的转换。
3302
3303**起始版本:** 11
3304
3305
3306**参数:**
3307
3308| 参数项 | 描述 |
3309| -- | -- |
3310| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3311| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待查询的对象。 |
3312| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) key | 要检查的是否存在的属性名称。 |
3313| bool* result | 表示对象是否存在该属性,true为是,false为否。 |
3314
3315**返回:**
3316
3317| 类型 | 说明 |
3318| -- | -- |
3319| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_NAME_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示期望传入名字不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3320
3321### OH_JSVM_SetNamedProperty()
3322
3323```
3324JSVM_EXTERN JSVM_Status OH_JSVM_SetNamedProperty(JSVM_Env env,JSVM_Value object,const char* utf8name,JSVM_Value value)
3325```
3326
3327**描述**
3328
3329此方法等效于object调用OH_JSVM_SetProperty设置名为`utf8Name`的属性。
3330
3331**起始版本:** 11
3332
3333
3334**参数:**
3335
3336| 参数项 | 描述 |
3337| -- | -- |
3338| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3339| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 要对其设置属性的对象。 |
3340| const char* utf8name | 要设置的属性的名称。 |
3341| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 属性值。 |
3342
3343**返回:**
3344
3345| 类型 | 说明 |
3346| -- | -- |
3347| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3348
3349### OH_JSVM_GetNamedProperty()
3350
3351```
3352JSVM_EXTERN JSVM_Status OH_JSVM_GetNamedProperty(JSVM_Env env,JSVM_Value object,const char* utf8name,JSVM_Value* result)
3353```
3354
3355**描述**
3356
3357此方法等效于object调用OH_JSVM_GetProperty获取名为`utf8Name`的属性对象。
3358
3359**起始版本:** 11
3360
3361
3362**参数:**
3363
3364| 参数项 | 描述 |
3365| -- | -- |
3366| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3367| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 从中检索属性的对象。 |
3368| const char* utf8name | 要获取的属性名。 |
3369| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 属性值。 |
3370
3371**返回:**
3372
3373| 类型 | 说明 |
3374| -- | -- |
3375| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3376
3377### OH_JSVM_HasNamedProperty()
3378
3379```
3380JSVM_EXTERN JSVM_Status OH_JSVM_HasNamedProperty(JSVM_Env env,JSVM_Value object,const char* utf8name,bool* result)
3381```
3382
3383**描述**
3384
3385此方法等效于object对象调用OH_JSVM_HasProperty查询其内部是否存在名为`utf8Name`的属性。
3386
3387**起始版本:** 11
3388
3389
3390**参数:**
3391
3392| 参数项 | 描述 |
3393| -- | -- |
3394| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3395| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待查询的对象。 |
3396| const char* utf8name | 待检查的属性名。 |
3397| bool* result | 该属性是否存在于对象上,true为是,false为否。 |
3398
3399**返回:**
3400
3401| 类型 | 说明 |
3402| -- | -- |
3403| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3404
3405### OH_JSVM_SetElement()
3406
3407```
3408JSVM_EXTERN JSVM_Status OH_JSVM_SetElement(JSVM_Env env,JSVM_Value object,uint32_t index,JSVM_Value value)
3409```
3410
3411**描述**
3412
3413在传入的Object上设置一个元素。
3414
3415**起始版本:** 11
3416
3417
3418**参数:**
3419
3420| 参数项 | 描述 |
3421| -- | -- |
3422| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3423| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待进行属性设置的对象。 |
3424| uint32_t index | 要设置的属性的索引。 |
3425| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 属性值。 |
3426
3427**返回:**
3428
3429| 类型 | 说明 |
3430| -- | -- |
3431| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3432
3433### OH_JSVM_GetElement()
3434
3435```
3436JSVM_EXTERN JSVM_Status OH_JSVM_GetElement(JSVM_Env env,JSVM_Value object,uint32_t index,JSVM_Value* result)
3437```
3438
3439**描述**
3440
3441获取请求索引处的元素。
3442
3443**起始版本:** 11
3444
3445
3446**参数:**
3447
3448| 参数项 | 描述 |
3449| -- | -- |
3450| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3451| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待进行属性检索的对象。 |
3452| uint32_t index | 要获取的属性的索引。 |
3453| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 属性值。 |
3454
3455**返回:**
3456
3457| 类型 | 说明 |
3458| -- | -- |
3459| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3460
3461### OH_JSVM_HasElement()
3462
3463```
3464JSVM_EXTERN JSVM_Status OH_JSVM_HasElement(JSVM_Env env,JSVM_Value object,uint32_t index,bool* result)
3465```
3466
3467**描述**
3468
3469如果传入的Object在指定的索引处有一个元素,则此JSVM-API返回true。
3470
3471**起始版本:** 11
3472
3473
3474**参数:**
3475
3476| 参数项 | 描述 |
3477| -- | -- |
3478| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3479| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待查询的对象。 |
3480| uint32_t index | 待确定是否存在元素的索引位置。 |
3481| bool* result | 该属性是否存在于对象上,true为是,false为否。 |
3482
3483**返回:**
3484
3485| 类型 | 说明 |
3486| -- | -- |
3487| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3488
3489### OH_JSVM_DeleteElement()
3490
3491```
3492JSVM_EXTERN JSVM_Status OH_JSVM_DeleteElement(JSVM_Env env,JSVM_Value object,uint32_t index,bool* result)
3493```
3494
3495**描述**
3496
3497尝试从object中删除指定index处的元素。
3498
3499**起始版本:** 11
3500
3501
3502**参数:**
3503
3504| 参数项 | 描述 |
3505| -- | -- |
3506| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3507| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待查询的对象。 |
3508| uint32_t index | 要删除的属性的索引。 |
3509| bool* result | 表示元素删除是否成功,true为是,false为否。 |
3510
3511**返回:**
3512
3513| 类型 | 说明 |
3514| -- | -- |
3515| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3516
3517### OH_JSVM_DefineProperties()
3518
3519```
3520JSVM_EXTERN JSVM_Status OH_JSVM_DefineProperties(JSVM_Env env,JSVM_Value object,size_t propertyCount,const JSVM_PropertyDescriptor* properties)
3521```
3522
3523**描述**
3524
3525通过此方法可以在给定对象上高效定义多个属性,这些属性使用属性描述符进行定义。通过一个属性描述符的数组,此API将为对象依次设置数组中的属性。
3526
3527**起始版本:** 11
3528
3529
3530**参数:**
3531
3532| 参数项 | 描述 |
3533| -- | -- |
3534| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3535| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待进行属性检索的对象。 |
3536| size_t propertyCount | properties数组中的元素数。 |
3537| [const JSVM_PropertyDescriptor](capi-jsvm-jsvm-propertydescriptor.md)* properties | 属性描述符的数组。 |
3538
3539**返回:**
3540
3541| 类型 | 说明 |
3542| -- | -- |
3543| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3544
3545### OH_JSVM_ObjectFreeze()
3546
3547```
3548JSVM_EXTERN JSVM_Status OH_JSVM_ObjectFreeze(JSVM_Env env,JSVM_Value object)
3549```
3550
3551**描述**
3552
3553冻结指定的对象,防止为其添加新的属性、删除现有属性、更改现有属性的可枚举性/可配置性/可写性、更改现有属性的值、改变对象原型等操作。
3554
3555**起始版本:** 11
3556
3557
3558**参数:**
3559
3560| 参数项 | 描述 |
3561| -- | -- |
3562| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3563| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待冻结的对象。 |
3564
3565**返回:**
3566
3567| 类型 | 说明 |
3568| -- | -- |
3569| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3570
3571### OH_JSVM_ObjectSeal()
3572
3573```
3574JSVM_EXTERN JSVM_Status OH_JSVM_ObjectSeal(JSVM_Env env,JSVM_Value object)
3575```
3576
3577**描述**
3578
3579封装指定的对象,防止为其添加新的属性并将所有现有属性标记为不可配置。
3580
3581**起始版本:** 11
3582
3583
3584**参数:**
3585
3586| 参数项 | 描述 |
3587| -- | -- |
3588| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3589| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 待封装的对象。 |
3590
3591**返回:**
3592
3593| 类型 | 说明 |
3594| -- | -- |
3595| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3596
3597### OH_JSVM_CallFunction()
3598
3599```
3600JSVM_EXTERN JSVM_Status OH_JSVM_CallFunction(JSVM_Env env,JSVM_Value recv,JSVM_Value func,size_t argc,const JSVM_Value* argv,JSVM_Value* result)
3601```
3602
3603**描述**
3604
3605支持从native代码调用JavaScript函数对象,这是从native代码回调到JavaScript的主要机制。
3606
3607**起始版本:** 11
3608
3609
3610**参数:**
3611
3612| 参数项 | 描述 |
3613| -- | -- |
3614| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3615| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) recv | 传递给被调用函数的this值。 |
3616| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) func | 表示将调用的JavaScript函数。 |
3617| size_t argc | argv数组中的元素个数。 |
3618| [const JSVM_Value](capi-jsvm-jsvm-value--8h.md)* argv | JSVM_values数组,表示将作为参数传递给函数的JavaScript值。 |
3619| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示返回的JavaScript对象。 |
3620
3621**返回:**
3622
3623| 类型 | 说明 |
3624| -- | -- |
3625| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3626
3627### OH_JSVM_CreateFunction()
3628
3629```
3630JSVM_EXTERN JSVM_Status OH_JSVM_CreateFunction(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback cb,JSVM_Value* result)
3631```
3632
3633**描述**
3634
3635支持在native代码中创建函数对象,这是从JavaScript调用native代码的主要机制。在此调用之后,新创建的函数在脚本中不再自动可见。相反,必须在JavaScript可见的任何对象上显示设置属性,才能从脚本访问该函数。
3636
3637**起始版本:** 11
3638
3639
3640**参数:**
3641
3642| 参数项                                                               | 描述 |
3643|-------------------------------------------------------------------| -- |
3644| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env                         | 调用JSVM-API的环境。 |
3645| const char* utf8name                                              | 编码为UTF8的函数的可选名称。这在JavaScript中是可见的,作为新函数对象的name属性。 |
3646| size_t length                                                     | utf8name的长度(以字节为单位)或JSVM_AUTO_LENGTH(如果以 null 结尾)。 |
3647| [JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md) cb          | 调用此函数对象时应调用的native函数。详情请参考[JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md)。 |
3648| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示新创建函数的JavaScript函数对象。 |
3649
3650**返回:**
3651
3652| 类型 | 说明 |
3653| -- | -- |
3654| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3655
3656### OH_JSVM_GetCbInfo()
3657
3658```
3659JSVM_EXTERN JSVM_Status OH_JSVM_GetCbInfo(JSVM_Env env,JSVM_CallbackInfo cbinfo,size_t* argc,JSVM_Value* argv,JSVM_Value* thisArg,void** data)
3660```
3661
3662**描述**
3663
3664此方法在回调函数中用于检索有关调用的详细信息,例如来自给定回调信息的参数和this指针。
3665
3666**起始版本:** 11
3667
3668
3669**参数:**
3670
3671| 参数项 | 描述 |
3672| -- | -- |
3673| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3674| [JSVM_CallbackInfo](capi-jsvm-jsvm-callbackinfo--8h.md) cbinfo | 传入回调函数的回调信息。 |
3675| size_t* argc | 指定所提供的argv数组的长度并接收参数的实际数量,可以通过传递NULL来选择性地忽略。 |
3676| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* argv | JSVM_Value的C数组,用于存储复制的参数。如果参数数量超过提供的数量,则只复制请求数量的参数。如果提供的参数比声明的少,则argv的其余部分将由代表undefined的JSVM_Value值填充。可以通过传递NULL来忽略argv。 |
3677| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* thisArg | 接收调用的JavaScript this参数。thisArg可以通过传递NULL来进行忽略。 |
3678| void** data | 接收回调的数据指针。data可以通过传递NULL来进行忽略。 |
3679
3680**返回:**
3681
3682| 类型 | 说明 |
3683| -- | -- |
3684| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
3685
3686### OH_JSVM_GetNewTarget()
3687
3688```
3689JSVM_EXTERN JSVM_Status OH_JSVM_GetNewTarget(JSVM_Env env,JSVM_CallbackInfo cbinfo,JSVM_Value* result)
3690```
3691
3692**描述**
3693
3694返回构造函数调用的new target。如果当前回调不是构造函数调用,结果为NULL。
3695
3696**起始版本:** 11
3697
3698
3699**参数:**
3700
3701| 参数项 | 描述 |
3702| -- | -- |
3703| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3704| [JSVM_CallbackInfo](capi-jsvm-jsvm-callbackinfo--8h.md) cbinfo | 传递给回调函数的回调信息。 |
3705| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 构造函数调用的new target。 |
3706
3707**返回:**
3708
3709| 类型 | 说明 |
3710| -- | -- |
3711| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
3712
3713### OH_JSVM_NewInstance()
3714
3715```
3716JSVM_EXTERN JSVM_Status OH_JSVM_NewInstance(JSVM_Env env,JSVM_Value constructor,size_t argc,const JSVM_Value* argv,JSVM_Value* result)
3717```
3718
3719**描述**
3720
3721使用给定的JSVM_Value表示的构造函数来实例化新的JavaScript值。
3722
3723**起始版本:** 11
3724
3725
3726**参数:**
3727
3728| 参数项 | 描述 |
3729| -- | -- |
3730| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3731| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) constructor | 表示将作为构造函数调用的JavaScript函数。 |
3732| size_t argc | argv数组中的元素个数。 |
3733| [const JSVM_Value](capi-jsvm-jsvm-value--8h.md)* argv | JavaScript值数组。其中JSVM_Value表示构造函数的参数。如果argc为零,则可以通过传入NULL来忽略此参数。 |
3734| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示返回的JavaScript对象,在本例中是构造的对象。 |
3735
3736**返回:**
3737
3738| 类型 | 说明 |
3739| -- | -- |
3740| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3741
3742### OH_JSVM_DefineClass()
3743
3744```
3745JSVM_EXTERN JSVM_Status OH_JSVM_DefineClass(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback constructor,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_Value* result)
3746```
3747
3748**描述**
3749
3750定义一个JavaScript类。
3751
3752**起始版本:** 11
3753
3754
3755**参数:**
3756
3757| 参数项 | 描述 |
3758| -- | -- |
3759| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3760| const char* utf8name | JavaScript构造函数的名称,建议在包装C++类时使用C++类名。 |
3761| size_t length | utf8name的长度(以字节为单位)或JSVM_AUTO_LENGTH(如果以 null 结尾)。 |
3762| [JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md) constructor | 用于创建类的构造函数的回调函数。包装C++类时,此方法必须是符合JSVM_Callback。callback签名的静态成员。不能使用C++类构造函数。详情请参考[JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md)。 |
3763| size_t propertyCount | properties数组参数中的项数。 |
3764| [const JSVM_PropertyDescriptor](capi-jsvm-jsvm-propertydescriptor.md)* properties | 类的属性描述符,用于定义类的属性和方法。 |
3765| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示类的构造函数的JSVM_Value。 |
3766
3767**返回:**
3768
3769| 类型 | 说明 |
3770| -- | -- |
3771| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3772
3773### OH_JSVM_Wrap()
3774
3775```
3776JSVM_EXTERN JSVM_Status OH_JSVM_Wrap(JSVM_Env env,JSVM_Value jsObject,void* nativeObject,JSVM_Finalize finalizeCb,void* finalizeHint,JSVM_Ref* result)
3777```
3778
3779**描述**
3780
3781在JavaScript对象中封装native实例,该实例后续可以通过OH_JSVM_Unwrap()进行检索。
3782
3783**起始版本:** 11
3784
3785
3786**参数:**
3787
3788| 参数项 | 描述 |
3789| -- | -- |
3790| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3791| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) jsObject | 将成为原生对象封装器的JavaScript对象。 |
3792| void* nativeObject | 将封装在JavaScript对象中的native实例。 |
3793| [JSVM_Finalize](capi-jsvm-types-h.md#jsvm_finalize) finalizeCb | 可选的原生回调,可用于在 JavaScript 对象被垃圾回收时释放native实例。 |
3794| void* finalizeHint | 传递给完成回调的可选上下文提示。 |
3795| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md)* result | 对封装对象的可选引用。 |
3796
3797**返回:**
3798
3799| 类型 | 说明 |
3800| -- | -- |
3801| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3802
3803### OH_JSVM_Unwrap()
3804
3805```
3806JSVM_EXTERN JSVM_Status OH_JSVM_Unwrap(JSVM_Env env,JSVM_Value jsObject,void** result)
3807```
3808
3809**描述**
3810
3811当JavaScript代码调用类的方法或属性访问器时,对应的JSVM_Callback将被调用。如果回调是针对实例方法或访问器的,则回调的this参数是封装器对象;然后可以通过调用封装器对象的OH_JSVM_Unwrap()获得作为调用目标的C++实例。
3812
3813**起始版本:** 11
3814
3815
3816**参数:**
3817
3818| 参数项 | 描述 |
3819| -- | -- |
3820| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3821| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) jsObject | 与native实例关联的对象。 |
3822| void** result | 指向封装的native实例的指针。 |
3823
3824**返回:**
3825
3826| 类型 | 说明 |
3827| -- | -- |
3828| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3829
3830### OH_JSVM_RemoveWrap()
3831
3832```
3833JSVM_EXTERN JSVM_Status OH_JSVM_RemoveWrap(JSVM_Env env,JSVM_Value jsObject,void** result)
3834```
3835
3836**描述**
3837
3838使用OH_JSVM_Wrap()检索先前封装在JavaScript对象——js_object中的native实例并移除封装。如果finalize回调与封装相关联,则当JavaScript对象被垃圾回收时将不再调用它。
3839
3840**起始版本:** 11
3841
3842
3843**参数:**
3844
3845| 参数项 | 描述 |
3846| -- | -- |
3847| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3848| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) jsObject | 与native实例关联的对象。 |
3849| void** result | 指向封装的native实例的指针。 |
3850
3851**返回:**
3852
3853| 类型 | 说明 |
3854| -- | -- |
3855| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
3856
3857### OH_JSVM_TypeTagObject()
3858
3859```
3860JSVM_EXTERN JSVM_Status OH_JSVM_TypeTagObject(JSVM_Env env,JSVM_Value value,const JSVM_TypeTag* typeTag)
3861```
3862
3863**描述**
3864
3865将typeTag指针的值与JavaScript对象或外部值相关联。可调用OH_JSVM_CheckObjectTypeTag()判断附加在对象上的标记类型,以确保对象的类型正确。如果对象已经有关联的类型标记,则返回JSVM_INVALID_ARG。
3866
3867**起始版本:** 11
3868
3869
3870**参数:**
3871
3872| 参数项 | 描述 |
3873| -- | -- |
3874| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3875| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要标记的JavaScript对象或外部值。 |
3876| [const JSVM_TypeTag](capi-jsvm-jsvm-typetag.md)* typeTag | 要标记对象的标签。 |
3877
3878**返回:**
3879
3880| 类型 | 说明 |
3881| -- | -- |
3882| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3883
3884### OH_JSVM_CheckObjectTypeTag()
3885
3886```
3887JSVM_EXTERN JSVM_Status OH_JSVM_CheckObjectTypeTag(JSVM_Env env,JSVM_Value value,const JSVM_TypeTag* typeTag,bool* result)
3888```
3889
3890**描述**
3891
3892将类型标签typeTag与JavaScript对象或外部值上的标签作对比。如果找到相同标签,设置result为true,否则为false。
3893
3894**起始版本:** 11
3895
3896
3897**参数:**
3898
3899| 参数项 | 描述 |
3900| -- | -- |
3901| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3902| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查类型标记的JavaScript对象或外部值。 |
3903| [const JSVM_TypeTag](capi-jsvm-jsvm-typetag.md)* typeTag | 用于比较在对象上找到的任何标签的标签。 |
3904| bool* result | 表示指定的类型标记是否与对象上的类型标记匹配。如果找到相同标签,设置result为true,否则为false。 |
3905
3906**返回:**
3907
3908| 类型 | 说明 |
3909| -- | -- |
3910| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
3911
3912### OH_JSVM_AddFinalizer()
3913
3914```
3915JSVM_EXTERN JSVM_Status OH_JSVM_AddFinalizer(JSVM_Env env,JSVM_Value jsObject,void* finalizeData,JSVM_Finalize finalizeCb,void* finalizeHint,JSVM_Ref* result)
3916```
3917
3918**描述**
3919
3920为JavaScript对象添加JSVM_Finalize回调,当JavaScript对象被垃圾回收时调用该回调函数。可以在单个JavaScript对象上多次调用OH_JSVM_AddFinalizer。
3921
3922**起始版本:** 11
3923
3924
3925**参数:**
3926
3927| 参数项 | 描述 |
3928| -- | -- |
3929| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3930| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) jsObject | 关联native数据的JavaScript对象。 |
3931| void* finalizeData | 要传递给finalizeCb的可选数据。 |
3932| [JSVM_Finalize](capi-jsvm-types-h.md#jsvm_finalize) finalizeCb | 当JavaScript对象被垃圾回收时,将用于释放native数据的原生回调。JSVM_Finalize提供了更多详细信息。 |
3933| void* finalizeHint | 传递给finalize回调的可选上下文提示。 |
3934| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md)* result | 可选的对JavaScript对象的引用。 |
3935
3936**返回:**
3937
3938| 类型 | 说明 |
3939| -- | -- |
3940| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不合法。 |
3941
3942### OH_JSVM_GetVersion()
3943
3944```
3945JSVM_EXTERN JSVM_Status OH_JSVM_GetVersion(JSVM_Env env,uint32_t* result)
3946```
3947
3948**描述**
3949
3950返回JSVM运行时支持的最高JSVM-API版本。后续将新增JSVM-API,以便支持更多的功能。引入该API的目的:在支持某功能的JSVM版本,可以使用新的功能;在不支持某功能的JSVM版本,可以提供回调行为。
3951
3952**起始版本:** 11
3953
3954
3955**参数:**
3956
3957| 参数项 | 描述 |
3958| -- | -- |
3959| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
3960| uint32_t* result | 支持的最高版本的JSVM-API。 |
3961
3962**返回:**
3963
3964| 类型 | 说明 |
3965| -- | -- |
3966| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
3967
3968### OH_JSVM_GetVMInfo()
3969
3970```
3971JSVM_EXTERN JSVM_Status OH_JSVM_GetVMInfo(JSVM_VMInfo* result)
3972```
3973
3974**描述**
3975
3976返回虚拟机的信息。
3977
3978**起始版本:** 11
3979
3980
3981**参数:**
3982
3983| 参数项 | 描述 |
3984| -- | -- |
3985| [JSVM_VMInfo](capi-jsvm-jsvm-vminfo.md)* result | 虚拟机的信息。 |
3986
3987**返回:**
3988
3989| 类型 | 说明 |
3990| -- | -- |
3991| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
3992
3993### OH_JSVM_AdjustExternalMemory()
3994
3995```
3996JSVM_EXTERN JSVM_Status OH_JSVM_AdjustExternalMemory(JSVM_Env env,int64_t changeInBytes,int64_t* result)
3997```
3998
3999**描述**
4000
4001此函数将因JavaScript对象而保持活跃的外部分配的内存大小通知给底层虚拟机。注册外部分配的内存将比其他方式更频繁地触发全局垃圾回收。
4002
4003**起始版本:** 11
4004
4005
4006**参数:**
4007
4008| 参数项 | 描述 |
4009| -- | -- |
4010| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4011| int64_t changeInBytes | 因JavaScript对象而保持活动状态的外部分配内存的变化。 |
4012| int64_t* result | 调整值。 |
4013
4014**返回:**
4015
4016| 类型 | 说明 |
4017| -- | -- |
4018| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4019
4020### OH_JSVM_MemoryPressureNotification()
4021
4022```
4023JSVM_EXTERN JSVM_Status OH_JSVM_MemoryPressureNotification(JSVM_Env env,JSVM_MemoryPressureLevel level)
4024```
4025
4026**描述**
4027
4028通知虚拟机系统内存不足并有选择地触发垃圾回收。
4029
4030**起始版本:** 11
4031
4032
4033**参数:**
4034
4035| 参数项 | 描述 |
4036| -- | -- |
4037| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4038| [JSVM_MemoryPressureLevel](capi-jsvm-types-h.md#jsvm_memorypressurelevel) level | 要为当前虚拟机设置的内存压力等级。 |
4039
4040**返回:**
4041
4042| 类型 | 说明 |
4043| -- | -- |
4044| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4045
4046### OH_JSVM_CreatePromise()
4047
4048```
4049JSVM_EXTERN JSVM_Status OH_JSVM_CreatePromise(JSVM_Env env,JSVM_Deferred* deferred,JSVM_Value* promise)
4050```
4051
4052**描述**
4053
4054创建一个延迟对象和一个JavaScript promise。
4055
4056**起始版本:** 11
4057
4058
4059**参数:**
4060
4061| 参数项 | 描述 |
4062| -- | -- |
4063| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4064| [JSVM_Deferred](capi-jsvm-jsvm-deferred--8h.md)* deferred | 一个新创建的延迟对象,后续可以传递给OH_JSVM_ResolveDeferred()或OH_JSVM_RejectDeferred()以解析resp。或拒绝相关的Promise。 |
4065| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* promise | 与延迟对象关联的JavaScript Promise。 |
4066
4067**返回:**
4068
4069| 类型 | 说明 |
4070| -- | -- |
4071| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
4072
4073### OH_JSVM_ResolveDeferred()
4074
4075```
4076JSVM_EXTERN JSVM_Status OH_JSVM_ResolveDeferred(JSVM_Env env,JSVM_Deferred deferred,JSVM_Value resolution)
4077```
4078
4079**描述**
4080
4081通过与之关联的延迟对象来解析JavaScript promise。它只能用于解析对应的可用的延迟对象的JavaScript Promise。这意味着Promise必须使用OH_JSVM_CreatePromise()创建,并且从该调用返回的对象必须保留,才能将其传递给此API。
4082
4083**起始版本:** 11
4084
4085
4086**参数:**
4087
4088| 参数项 | 描述 |
4089| -- | -- |
4090| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4091| [JSVM_Deferred](capi-jsvm-jsvm-deferred--8h.md) deferred | 要解析其关联promise的延迟对象。 |
4092| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) resolution | 用来解决Promise的值。 |
4093
4094**返回:**
4095
4096| 类型 | 说明 |
4097| -- | -- |
4098| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
4099
4100### OH_JSVM_RejectDeferred()
4101
4102```
4103JSVM_EXTERN JSVM_Status OH_JSVM_RejectDeferred(JSVM_Env env,JSVM_Deferred deferred,JSVM_Value rejection)
4104```
4105
4106**描述**
4107
4108通过与之关联的延迟对象来拒绝JavaScript Promise。它只能用于拒绝对应的可用延迟对象的JavaScript Promise。这意味着Promise必须使用OH_JSVM_CreatePromise()创建,并且从该调用返回的对象必须保留,才能将其传递给此API。
4109
4110**起始版本:** 11
4111
4112
4113**参数:**
4114
4115| 参数项 | 描述 |
4116| -- | -- |
4117| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4118| [JSVM_Deferred](capi-jsvm-jsvm-deferred--8h.md) deferred | 要解析其关联promise的延迟对象。 |
4119| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) rejection | 用来拒绝Promise的值。 |
4120
4121**返回:**
4122
4123| 类型 | 说明 |
4124| -- | -- |
4125| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
4126
4127### OH_JSVM_IsPromise()
4128
4129```
4130JSVM_EXTERN JSVM_Status OH_JSVM_IsPromise(JSVM_Env env,JSVM_Value value,bool* isPromise)
4131```
4132
4133**描述**
4134
4135查询Promise是否为原生Promise对象。
4136
4137**起始版本:** 11
4138
4139
4140**参数:**
4141
4142| 参数项 | 描述 |
4143| -- | -- |
4144| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4145| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的值。 |
4146| bool* isPromise | 表示是否为原生Promise对象(即底层引擎创建的promise对象)的标志,true为是,false为否。 |
4147
4148**返回:**
4149
4150| 类型 | 说明 |
4151| -- | -- |
4152| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4153
4154### OH_JSVM_PromiseRegisterHandler()
4155
4156```
4157JSVM_EXTERN JSVM_Status OH_JSVM_PromiseRegisterHandler(JSVM_Env env,JSVM_Value promise,JSVM_Value onFulfilled,JSVM_Value onRejected,JSVM_Value* result)
4158```
4159
4160**描述**
4161
4162注册 处理Promise兑现/拒绝的 回调函数。
4163
4164**起始版本:** 18
4165
4166
4167**参数:**
4168
4169| 参数项 | 描述 |
4170| -- | -- |
4171| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
4172| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) promise | 需要注册回调的 promise。 |
4173| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) onFulfilled | 该函数在 promise 兑现后调用。 |
4174| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) onRejected | 该函数在 promise 拒绝后调用。 |
4175| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,返回 promise 调用 then/catch 接口后生成的新的 promise。 |
4176
4177**返回:**
4178
4179| 类型 | 说明 |
4180| -- | -- |
4181| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 如果 env 或 promise 为空,或 onFulfilled 和 onRejected 同时为空。<br>         [JSVM_INVALID_TYPE](capi-jsvm-types-h.md#jsvm_status) 如果 promise 非 JS 的 Promise 类型,或 onFulfilled、onRejected 非 JS 的 Function 类型。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 如果存在 JS 异常待处理。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 如果 API 执行错误。 |
4182
4183### OH_JSVM_JsonParse()
4184
4185```
4186JSVM_EXTERN JSVM_Status OH_JSVM_JsonParse(JSVM_Env env,JSVM_Value jsonString,JSVM_Value* result)
4187```
4188
4189**描述**
4190
4191解析JSON字符串,并返回成功解析的值。
4192
4193**起始版本:** 11
4194
4195
4196**参数:**
4197
4198| 参数项 | 描述 |
4199| -- | -- |
4200| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4201| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) jsonString | 待解析的字符串。 |
4202| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 成功解析的值。 |
4203
4204**返回:**
4205
4206| 类型 | 说明 |
4207| -- | -- |
4208| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的参数不是string类型。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
4209
4210### OH_JSVM_JsonStringify()
4211
4212```
4213JSVM_EXTERN JSVM_Status OH_JSVM_JsonStringify(JSVM_Env env,JSVM_Value jsonObject,JSVM_Value* result)
4214```
4215
4216**描述**
4217
4218将对象字符串化,并返回成功转换后的字符串。
4219
4220**起始版本:** 11
4221
4222
4223**参数:**
4224
4225| 参数项 | 描述 |
4226| -- | -- |
4227| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4228| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) jsonObject | 待字符串化的对象。 |
4229| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 成功转换后返回的字符串。 |
4230
4231**返回:**
4232
4233| 类型 | 说明 |
4234| -- | -- |
4235| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。 |
4236
4237### OH_JSVM_CreateSnapshot()
4238
4239```
4240JSVM_EXTERN JSVM_Status OH_JSVM_CreateSnapshot(JSVM_VM vm,size_t contextCount,const JSVM_Env* contexts,const char** blobData,size_t* blobSize)
4241```
4242
4243**描述**
4244
4245创建虚拟机的启动快照。
4246
4247**起始版本:** 11
4248
4249
4250**参数:**
4251
4252| 参数项 | 描述 |
4253| -- | -- |
4254| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 目标环境,API接口将在该环境下调用。 |
4255| size_t contextCount | 上下文个数。 |
4256| [const JSVM_Env](capi-jsvm-jsvm-env--8h.md)* contexts | 要添加到快照的上下文数组。 |
4257| const char** blobData | 快照数据。 |
4258| size_t* blobSize | 快照数据的大小。 |
4259
4260**返回:**
4261
4262| 类型 | 说明 |
4263| -- | -- |
4264| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
4265
4266### OH_JSVM_GetHeapStatistics()
4267
4268```
4269JSVM_EXTERN JSVM_Status OH_JSVM_GetHeapStatistics(JSVM_VM vm,JSVM_HeapStatistics* result)
4270```
4271
4272**描述**
4273
4274返回一组虚拟机堆的统计数据。
4275
4276**起始版本:** 12
4277
4278
4279**参数:**
4280
4281| 参数项 | 描述 |
4282| -- | -- |
4283| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 返回堆统计信息的虚拟机。 |
4284| [JSVM_HeapStatistics](capi-jsvm-jsvm-heapstatistics.md)* result | 堆统计数据。 |
4285
4286**返回:**
4287
4288| 类型 | 说明 |
4289| -- | -- |
4290| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4291
4292### OH_JSVM_StartCpuProfiler()
4293
4294```
4295JSVM_EXTERN JSVM_Status OH_JSVM_StartCpuProfiler(JSVM_VM vm,JSVM_CpuProfiler* result)
4296```
4297
4298**描述**
4299
4300创建并启动一个CPU profiler。
4301
4302**起始版本:** 12
4303
4304
4305**参数:**
4306
4307| 参数项 | 描述 |
4308| -- | -- |
4309| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 启动CPU profiler的虚拟机。 |
4310| [JSVM_CpuProfiler](capi-jsvm-jsvm-cpuprofiler--8h.md)* result | 指向CPU profiler的指针。 |
4311
4312**返回:**
4313
4314| 类型 | 说明 |
4315| -- | -- |
4316| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4317
4318### OH_JSVM_StopCpuProfiler()
4319
4320```
4321JSVM_EXTERN JSVM_Status OH_JSVM_StopCpuProfiler(JSVM_VM vm,JSVM_CpuProfiler profiler,JSVM_OutputStream stream,void* streamData)
4322```
4323
4324**描述**
4325
4326停止CPU profiler并将结果输出到流。
4327
4328**起始版本:** 12
4329
4330
4331**参数:**
4332
4333| 参数项                                                                | 描述 |
4334|--------------------------------------------------------------------| -- |
4335| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm                             | 启动CPU profiler的虚拟机。 |
4336| [JSVM_CpuProfiler](capi-jsvm-jsvm-cpuprofiler--8h.md) profiler     | 要停止的CPU profiler。 |
4337| [JSVM_OutputStream](capi-jsvm-types-h.md#jsvm_outputstream) stream | 接收数据的输出流回调。 |
4338| void* streamData                                                   | 传递给输出流回调的可选数据。例如,可以是一个文件流,用来将输出流回调中传递的采样数据写入文件。 |
4339
4340**返回:**
4341
4342| 类型 | 说明 |
4343| -- | -- |
4344| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4345
4346### OH_JSVM_TakeHeapSnapshot()
4347
4348```
4349JSVM_EXTERN JSVM_Status OH_JSVM_TakeHeapSnapshot(JSVM_VM vm,JSVM_OutputStream stream,void* streamData)
4350```
4351
4352**描述**
4353
4354获取当前堆快照并将其输出到流。
4355
4356**起始版本:** 12
4357
4358
4359**参数:**
4360
4361| 参数项 | 描述 |
4362| -- | -- |
4363| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 将被获取堆快照的虚拟机。 |
4364| [JSVM_OutputStream](capi-jsvm-types-h.md#jsvm_outputstream) stream | 接收数据的输出流回调。 |
4365| void* streamData | 传递给输出流回调的可选数据。例如,可以是一个文件流,用来将输出流回调中传递的采样数据写入文件。 |
4366
4367**返回:**
4368
4369| 类型 | 说明 |
4370| -- | -- |
4371| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
4372
4373### OH_JSVM_OpenInspector()
4374
4375```
4376JSVM_EXTERN JSVM_Status OH_JSVM_OpenInspector(JSVM_Env env,const char* host,uint16_t port)
4377```
4378
4379**描述**
4380
4381在指定的主机和端口上激活inspector,将用来调试JS代码。
4382
4383**起始版本:** 12
4384
4385
4386**参数:**
4387
4388| 参数项 | 描述 |
4389| -- | -- |
4390| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4391| const char* host | 要监听inspector连接的主机IP地址。 |
4392| uint16_t port | 要监听inspector连接的端口。 |
4393
4394**返回:**
4395
4396| 类型 | 说明 |
4397| -- | -- |
4398| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
4399
4400### OH_JSVM_CloseInspector()
4401
4402```
4403JSVM_EXTERN JSVM_Status OH_JSVM_CloseInspector(JSVM_Env env)
4404```
4405
4406**描述**
4407
4408尝试关闭剩余的所有inspector连接。
4409
4410**起始版本:** 12
4411
4412
4413**参数:**
4414
4415| 参数项 | 描述 |
4416| -- | -- |
4417| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4418
4419**返回:**
4420
4421| 类型 | 说明 |
4422| -- | -- |
4423| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
4424
4425### OH_JSVM_WaitForDebugger()
4426
4427```
4428JSVM_EXTERN JSVM_Status OH_JSVM_WaitForDebugger(JSVM_Env env,bool breakNextLine)
4429```
4430
4431**描述**
4432
4433等待主机与inspector建立socket连接,连接建立后程序将继续运行。发送Runtime.runIfWaitingForDebugger命令。
4434
4435**起始版本:** 12
4436
4437
4438**参数:**
4439
4440| 参数项 | 描述 |
4441| -- | -- |
4442| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4443| bool breakNextLine | 是否在下一行JavaScript代码中中断。breakNextLine为true将暂停运行下一行JS代码,开发者需要通过调试器的调试按钮控制JS继续执行;false则不会终端中断。|
4444
4445**返回:**
4446
4447| 类型 | 说明 |
4448| -- | -- |
4449| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
4450
4451### OH_JSVM_DefineClassWithPropertyHandler()
4452
4453```
4454JSVM_EXTERN JSVM_Status OH_JSVM_DefineClassWithPropertyHandler(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback constructor,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_PropertyHandlerCfg propertyHandlerCfg,JSVM_Callback callAsFunctionCallback,JSVM_Value* result)
4455```
4456
4457**描述**
4458
4459定义一个具有给定类名、构造函数、属性和回调处理程序的JavaScript类,属性操作包括getter、setter、deleter、enumerator等,并作为函数回调进行调用。
4460
4461**起始版本:** 12
4462
4463
4464**参数:**
4465
4466| 参数项                                                                               | 描述 |
4467|-----------------------------------------------------------------------------------| -- |
4468| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env                                         | 调用JSVM-API的环境。 |
4469| const char* utf8name                                                              | JavaScript类构造函数的名称。 |
4470| size_t length                                                                     | utf8name的长度(以字节为单位)或JSVM_AUTO_LENGTH(如果以 null 结尾)。 |
4471| [JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md) constructor                     | 用于创建类的构造函数的回调函数。此方法必须是JSVM_Callback类型。constructor中callback回调需为静态成员。不能使用C++类构造函数。详情请参考[JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md)。 |
4472| size_t propertyCount                                                              | properties数组参数中的项数。 |
4473| [const JSVM_PropertyDescriptor](capi-jsvm-jsvm-propertydescriptor.md)* properties | 描述静态数据和实例数据的属性描述符数组类上的属性、访问器和方法请参考JSVM_PropertyDescriptor。 |
4474| [JSVM_PropertyHandlerCfg](capi-jsvm-jsvm-propertyhandlerconfigurationstruct.md) propertyHandlerCfg                                    | 访问实例对象属性触发相应的回调函数。 |
4475| [JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md) callAsFunctionCallback          | 将实例对象作为函数调用将触发此回调。 |
4476| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result                 | 表示JavaScript类的构造函数的JSVM_Value。 |
4477
4478**返回:**
4479
4480| 类型 | 说明 |
4481| -- | -- |
4482| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示执行的过程中产生了JS异常。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示有未知的原因导致执行失败。 |
4483
4484### OH_JSVM_IsUndefined()
4485
4486```
4487JSVM_EXTERN JSVM_Status OH_JSVM_IsUndefined(JSVM_Env env,JSVM_Value value,bool* isUndefined)
4488```
4489
4490**描述**
4491
4492此API检查传入的值是否为Undefined。这相当于JS中的`value === undefined`。
4493
4494**起始版本:** 12
4495
4496
4497**参数:**
4498
4499| 参数项 | 描述 |
4500| -- | -- |
4501| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4502| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4503| bool* isUndefined | 表示给定的JSVM_Value是否为Undefined,true为是,false为否。 |
4504
4505**返回:**
4506
4507| 类型 | 说明 |
4508| -- | -- |
4509| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4510
4511### OH_JSVM_IsNull()
4512
4513```
4514JSVM_EXTERN JSVM_Status OH_JSVM_IsNull(JSVM_Env env,JSVM_Value value,bool* isNull)
4515```
4516
4517**描述**
4518
4519此API检查传入的值是否为Null对象。这相当于JS中的`value === null`。
4520
4521**起始版本:** 12
4522
4523
4524**参数:**
4525
4526| 参数项 | 描述 |
4527| -- | -- |
4528| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4529| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4530| bool* isNull | 表示给定的JSVM_Value是否为Null,true为是,false为否。 |
4531
4532**返回:**
4533
4534| 类型 | 说明 |
4535| -- | -- |
4536| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4537
4538### OH_JSVM_IsNullOrUndefined()
4539
4540```
4541JSVM_EXTERN JSVM_Status OH_JSVM_IsNullOrUndefined(JSVM_Env env,JSVM_Value value,bool* isNullOrUndefined)
4542```
4543
4544**描述**
4545
4546此API检查传入的值是否为Null或Undefined。这相当于JS中的`value == null`。
4547
4548**起始版本:** 12
4549
4550
4551**参数:**
4552
4553| 参数项 | 描述 |
4554| -- | -- |
4555| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4556| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4557| bool* isNullOrUndefined | 表示给定的JSVM_Value是否为Null或Undefined,true为是,false为否。 |
4558
4559**返回:**
4560
4561| 类型 | 说明 |
4562| -- | -- |
4563| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4564
4565### OH_JSVM_IsBoolean()
4566
4567```
4568JSVM_EXTERN JSVM_Status OH_JSVM_IsBoolean(JSVM_Env env,JSVM_Value value,bool* isBoolean)
4569```
4570
4571**描述**
4572
4573此API检查传入的值是否为Boolean。这相当于JS中的`typeof value === 'boolean'`。
4574
4575**起始版本:** 12
4576
4577
4578**参数:**
4579
4580| 参数项 | 描述 |
4581| -- | -- |
4582| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4583| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4584| bool* isBoolean | 表示给定的JSVM_Value是否为Boolean,true为是,false为否。 |
4585
4586**返回:**
4587
4588| 类型 | 说明 |
4589| -- | -- |
4590| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4591
4592### OH_JSVM_IsNumber()
4593
4594```
4595JSVM_EXTERN JSVM_Status OH_JSVM_IsNumber(JSVM_Env env,JSVM_Value value,bool* isNumber)
4596```
4597
4598**描述**
4599
4600此API检查传入的值是否为Number。这相当于JS中的`typeof value === 'number'`。
4601
4602**起始版本:** 12
4603
4604
4605**参数:**
4606
4607| 参数项 | 描述 |
4608| -- | -- |
4609| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4610| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4611| bool* isNumber | 表示给定的JSVM_Value是否为Number,true为是,false为否。 |
4612
4613**返回:**
4614
4615| 类型 | 说明 |
4616| -- | -- |
4617| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4618
4619### OH_JSVM_IsString()
4620
4621```
4622JSVM_EXTERN JSVM_Status OH_JSVM_IsString(JSVM_Env env,JSVM_Value value,bool* isString)
4623```
4624
4625**描述**
4626
4627此API检查传入的值是否为String。这相当于JS中的`typeof value === 'string'`。
4628
4629**起始版本:** 12
4630
4631
4632**参数:**
4633
4634| 参数项 | 描述 |
4635| -- | -- |
4636| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4637| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4638| bool* isString | 表示给定的JSVM_Value是否为String,true为是,false为否。 |
4639
4640**返回:**
4641
4642| 类型 | 说明 |
4643| -- | -- |
4644| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4645
4646### OH_JSVM_IsSymbol()
4647
4648```
4649JSVM_EXTERN JSVM_Status OH_JSVM_IsSymbol(JSVM_Env env,JSVM_Value value,bool* isSymbol)
4650```
4651
4652**描述**
4653
4654此API检查传入的值是否为Symbol。这相当于JS中的`typeof value === 'symbol'`。
4655
4656**起始版本:** 12
4657
4658
4659**参数:**
4660
4661| 参数项 | 描述 |
4662| -- | -- |
4663| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4664| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4665| bool* isSymbol | 表示给定的JSVM_Value是否为Symbol,true为是,false为否。 |
4666
4667**返回:**
4668
4669| 类型 | 说明 |
4670| -- | -- |
4671| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4672
4673### OH_JSVM_IsFunction()
4674
4675```
4676JSVM_EXTERN JSVM_Status OH_JSVM_IsFunction(JSVM_Env env,JSVM_Value value,bool* isFunction)
4677```
4678
4679**描述**
4680
4681此API检查传入的值是否为Function。这相当于JS中的`typeof value === 'function'`。
4682
4683**起始版本:** 12
4684
4685
4686**参数:**
4687
4688| 参数项 | 描述 |
4689| -- | -- |
4690| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4691| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4692| bool* isFunction | 表示给定的JSVM_Value是否为Function,true为是,false为否。 |
4693
4694**返回:**
4695
4696| 类型 | 说明 |
4697| -- | -- |
4698| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4699
4700### OH_JSVM_IsObject()
4701
4702```
4703JSVM_EXTERN JSVM_Status OH_JSVM_IsObject(JSVM_Env env,JSVM_Value value,bool* isObject)
4704```
4705
4706**描述**
4707
4708此API检查传入的值是否为Object。
4709
4710**起始版本:** 12
4711
4712
4713**参数:**
4714
4715| 参数项 | 描述 |
4716| -- | -- |
4717| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4718| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4719| bool* isObject | 表示给定的JSVM_Value是否为Object,true为是,false为否。 |
4720
4721**返回:**
4722
4723| 类型 | 说明 |
4724| -- | -- |
4725| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4726
4727### OH_JSVM_IsBigInt()
4728
4729```
4730JSVM_EXTERN JSVM_Status OH_JSVM_IsBigInt(JSVM_Env env,JSVM_Value value,bool* isBigInt)
4731```
4732
4733**描述**
4734
4735此API检查传入的值是否为BigInt。这相当于JS中的`typeof value === 'bigint'`。
4736
4737**起始版本:** 12
4738
4739
4740**参数:**
4741
4742| 参数项 | 描述 |
4743| -- | -- |
4744| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4745| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4746| bool* isBigInt | 表示给定的JSVM_Value是否为BigInt,true为是,false为否。 |
4747
4748**返回:**
4749
4750| 类型 | 说明 |
4751| -- | -- |
4752| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功,这个API不会触发任何异常。 |
4753
4754### OH_JSVM_CreateMap()
4755
4756```
4757JSVM_Status JSVM_CDECL OH_JSVM_CreateMap(JSVM_Env env, JSVM_Value* result)
4758```
4759
4760**描述**
4761
4762此API返回与JavaScript Map类型对应的JavaScript值。
4763
4764**起始版本:** 12
4765
4766
4767**参数:**
4768
4769| 参数项 | 描述 |
4770| -- | -- |
4771| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4772| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript Map的JSVM_Value。 |
4773
4774**返回:**
4775
4776| 类型 | 说明 |
4777| -- | -- |
4778| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。 |
4779
4780### OH_JSVM_IsMap()
4781
4782```
4783JSVM_Status JSVM_CDECL OH_JSVM_IsMap(JSVM_Env env,JSVM_Value value,bool* isMap)
4784```
4785
4786**描述**
4787
4788此API检查传入的值是否为Map。
4789
4790**起始版本:** 12
4791
4792
4793**参数:**
4794
4795| 参数项 | 描述 |
4796| -- | -- |
4797| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4798| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4799| bool* isMap | 给定的值是否为Map,true为是,false为否。 |
4800
4801**返回:**
4802
4803| 类型 | 说明 |
4804| -- | -- |
4805| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。 |
4806
4807### OH_JSVM_IsConstructor()
4808
4809```
4810JSVM_Status JSVM_CDECL OH_JSVM_IsConstructor(JSVM_Env env,JSVM_Value value,bool* isConstructor)
4811```
4812
4813**描述**
4814
4815此API检查传入的值是否为构造函数。
4816
4817**起始版本:** 12
4818
4819
4820**参数:**
4821
4822| 参数项 | 描述 |
4823| -- | -- |
4824| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4825| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
4826| bool* isConstructor | 给定的值是否为构造函数,true为是,false为否。 |
4827
4828**返回:**
4829
4830| 类型 | 说明 |
4831| -- | -- |
4832| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。 |
4833
4834### OH_JSVM_CreateRegExp()
4835
4836```
4837JSVM_Status JSVM_CDECL OH_JSVM_CreateRegExp(JSVM_Env env,JSVM_Value value,JSVM_RegExpFlags flags,JSVM_Value* result)
4838```
4839
4840**描述**
4841
4842此API返回与输入的JavaScript字符串对应的正则表达式对象。接口可能会抛出异常。
4843
4844**起始版本:** 12
4845
4846
4847**参数:**
4848
4849| 参数项 | 描述 |
4850| -- | -- |
4851| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4852| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要转换为正则表达式的JavaScript字符串。 |
4853| [JSVM_RegExpFlags](capi-jsvm-types-h.md#jsvm_regexpflags) flags | 正则表达式标志位。 |
4854| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 代表JavaScript RegExp的JSVM_Value。 |
4855
4856**返回:**
4857
4858| 类型 | 说明 |
4859| -- | -- |
4860| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示API在运行时抛出异常。 |
4861
4862### OH_JSVM_ObjectGetPrototypeOf()
4863
4864```
4865JSVM_EXTERN JSVM_Status OH_JSVM_ObjectGetPrototypeOf(JSVM_Env env,JSVM_Value object,JSVM_Value* result)
4866```
4867
4868**描述**
4869
4870获取JavaScript object的原型。
4871
4872**起始版本:** 12
4873
4874
4875**参数:**
4876
4877| 参数项 | 描述 |
4878| -- | -- |
4879| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4880| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object |  表示待返回其原型的JavaScript object。 |
4881| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示给定对象的原型。 |
4882
4883**返回:**
4884
4885| 类型 | 说明 |
4886| -- | -- |
4887| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示API在运行时抛出异常。 |
4888
4889### OH_JSVM_ObjectSetPrototypeOf()
4890
4891```
4892JSVM_EXTERN JSVM_Status OH_JSVM_ObjectSetPrototypeOf(JSVM_Env env,JSVM_Value object,JSVM_Value prototype)
4893```
4894
4895**描述**
4896
4897设置给定的JavaScript object的原型。
4898
4899**起始版本:** 12
4900
4901
4902**参数:**
4903
4904| 参数项 | 描述 |
4905| -- | -- |
4906| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4907| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 表示需要设置原型的JavaScript object。 |
4908| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) prototype | 对象原型。 |
4909
4910**返回:**
4911
4912| 类型 | 说明 |
4913| -- | -- |
4914| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示设置原型失败。如循环设置原型时,会触发该失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示API在运行时抛出异常。 |
4915
4916### OH_JSVM_CreateSet()
4917
4918```
4919JSVM_EXTERN JSVM_Status OH_JSVM_CreateSet(JSVM_Env env,JSVM_Value* result)
4920```
4921
4922**描述**
4923
4924创建JavaScript Set对象。
4925
4926**起始版本:** 12
4927
4928
4929**参数:**
4930
4931| 参数项 | 描述 |
4932| -- | -- |
4933| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4934| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示已经创建的JavaScript Set对象。 |
4935
4936**返回:**
4937
4938| 类型 | 说明 |
4939| -- | -- |
4940| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。 |
4941
4942### OH_JSVM_IsSet()
4943
4944```
4945JSVM_EXTERN JSVM_Status OH_JSVM_IsSet(JSVM_Env env,JSVM_Value value,bool* isSet)
4946```
4947
4948**描述**
4949
4950判断给定的对象是否是Set类型。
4951
4952**起始版本:** 12
4953
4954
4955**参数:**
4956
4957| 参数项 | 描述 |
4958| -- | -- |
4959| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
4960| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的对象。 |
4961| bool* isSet | 给定的对象是否是Set类型,true为是,false为否。 |
4962
4963**返回:**
4964
4965| 类型 | 说明 |
4966| -- | -- |
4967| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示输入参数不合法。 |
4968
4969### OH_JSVM_CoerceToBigInt()
4970
4971```
4972JSVM_EXTERN JSVM_Status OH_JSVM_CoerceToBigInt(JSVM_Env env,JSVM_Value value,JSVM_Value* result)
4973```
4974
4975**描述**
4976
4977实现抽象操作`ToBigInt()`。
4978
4979**起始版本:** 12
4980
4981
4982**参数:**
4983
4984| 参数项 | 描述 |
4985| -- | -- |
4986| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用该JSVM-API的环境。 |
4987| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 要进行强制转换的JavaScript值。 |
4988| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示成功转换成BigInt后的JavaScript值。 |
4989
4990**返回:**
4991
4992| 类型 | 说明 |
4993| -- | -- |
4994| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_BIGINT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 如果传入的JavaScript值无法转换成BitInt。 |
4995
4996### OH_JSVM_IsRegExp()
4997
4998```
4999JSVM_EXTERN JSVM_Status OH_JSVM_IsRegExp(JSVM_Env env,JSVM_Value value,bool* result)
5000```
5001
5002**描述**
5003
5004此API检查传入的值是否为JavaScript RegExp对象。
5005
5006**起始版本:** 12
5007
5008
5009**参数:**
5010
5011| 参数项 | 描述 |
5012| -- | -- |
5013| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
5014| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的JSVM_Value。 |
5015| bool* result | 表示给定的JSVM_Value是否为JavaScript RegExp对象,true为是,false为否。 |
5016
5017**返回:**
5018
5019| 类型 | 说明 |
5020| -- | -- |
5021| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
5022
5023### OH_JSVM_CreateFunctionWithScript()
5024
5025```
5026JSVM_EXTERN JSVM_Status OH_JSVM_CreateFunctionWithScript(JSVM_Env env,const char* funcName,size_t length,size_t argc,const JSVM_Value* argv,JSVM_Value script,JSVM_Value* result)
5027```
5028
5029**描述**
5030
5031创建一个以给定JavaScript为函数体的函数。
5032
5033**起始版本:** 12
5034
5035
5036**参数:**
5037
5038| 参数项 | 描述 |
5039| -- | -- |
5040| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
5041| const char* funcName | 包含函数名称的字符串。如果传入NULL,则创建一个匿名函数。 |
5042| size_t length | funcName的长度(以字节为单位)或JSVM_AUTO_LENGTH(如果以 null 结尾)。 |
5043| size_t argc | argv数组中的元素个数。 |
5044| [const JSVM_Value](capi-jsvm-jsvm-value--8h.md)* argv | JSVM_values数组,表示将作为参数传递给函数的JavaScript值。 |
5045| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) script | 包含作为函数体的JavaScript字符串。 |
5046| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 表示新创建函数的JavaScript函数对象的JSVM_Value。 |
5047
5048**返回:**
5049
5050| 类型 | 说明 |
5051| -- | -- |
5052| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示输入的JavaScript无法编译成功。 |
5053
5054### OH_JSVM_PumpMessageLoop()
5055
5056```
5057JSVM_EXTERN JSVM_Status OH_JSVM_PumpMessageLoop(JSVM_VM vm,bool* result)
5058```
5059
5060**描述**
5061
5062启动虚拟机内任务队列,这个任务队列可以通过外部事件循环执行。
5063
5064**起始版本:** 12
5065
5066
5067**参数:**
5068
5069| 参数项 | 描述 |
5070| -- | -- |
5071| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 启动任务队列的虚拟机实例。 |
5072| bool* result | 表示任务队列是否成功启动,true为是,false为否。 |
5073
5074**返回:**
5075
5076| 类型 | 说明 |
5077| -- | -- |
5078| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回JSVM函数结果代码。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
5079
5080### OH_JSVM_PerformMicrotaskCheckpoint()
5081
5082```
5083JSVM_EXTERN JSVM_Status OH_JSVM_PerformMicrotaskCheckpoint(JSVM_VM vm)
5084```
5085
5086**描述**
5087
5088检查队列中是否有微任务等待,如果存在则执行它们。
5089
5090**起始版本:** 12
5091
5092
5093**参数:**
5094
5095| 参数项 | 描述 |
5096| -- | -- |
5097| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 要检查微任务的虚拟机实例。 |
5098
5099**返回:**
5100
5101| 类型 | 说明 |
5102| -- | -- |
5103| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回JSVM函数结果代码。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
5104
5105### OH_JSVM_RetainScript()
5106
5107```
5108JSVM_EXTERN JSVM_Status OH_JSVM_RetainScript(JSVM_Env env, JSVM_Script script)
5109```
5110
5111**描述**
5112
5113持久保存一个JSVM_Script并将其生命周期延长到当前作用域之外。
5114
5115**起始版本:** 12
5116
5117
5118**参数:**
5119
5120| 参数项 | 描述 |
5121| -- | -- |
5122| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用该API的环境。 |
5123| [JSVM_Script](capi-jsvm-jsvm-script--8h.md) script | 包含要持久化保存脚本的JavaScript字符串。 |
5124
5125**返回:**
5126
5127| 类型 | 说明 |
5128| -- | -- |
5129| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示脚本为空或已被保存过。 |
5130
5131### OH_JSVM_ReleaseScript()
5132
5133```
5134JSVM_EXTERN JSVM_Status OH_JSVM_ReleaseScript(JSVM_Env env, JSVM_Script script)
5135```
5136
5137**描述**
5138
5139释放由 OH_JSVM_RetainScript 保留的脚本,释放后应避免对传入 script 的再次使用。
5140
5141**起始版本:** 12
5142
5143
5144**参数:**
5145
5146| 参数项 | 描述 |
5147| -- | -- |
5148| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用该API的环境。 |
5149| [JSVM_Script](capi-jsvm-jsvm-script--8h.md) script | 包含要释放的脚本的JavaScript字符串。 |
5150
5151**返回:**
5152
5153| 类型 | 说明 |
5154| -- | -- |
5155| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示脚本为空或未被保存过。 |
5156
5157### OH_JSVM_OpenInspectorWithName()
5158
5159```
5160JSVM_EXTERN JSVM_Status OH_JSVM_OpenInspectorWithName(JSVM_Env env,int pid,const char* name)
5161```
5162
5163**描述**
5164
5165打开一个名为 name 的 inspector,为其打开对应 pid 的 unix domain 端口。
5166
5167**起始版本:** 12
5168
5169
5170**参数:**
5171
5172| 参数项 | 描述 |
5173| -- | -- |
5174| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用该API的环境。 |
5175| int pid | 用于标识 inspector 连接的进程ID。 |
5176| const char* name | inspector 的名字。 如果传入nullptr, 则默认名称为jsvm。 |
5177
5178**返回:**
5179
5180| 类型 | 说明 |
5181| -- | -- |
5182| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示发生了异常。 |
5183
5184### OH_JSVM_CompileWasmModule()
5185
5186```
5187JSVM_EXTERN JSVM_Status OH_JSVM_CompileWasmModule(JSVM_Env env,const uint8_t *wasmBytecode,size_t wasmBytecodeLength,const uint8_t *cacheData,size_t cacheDataLength,bool *cacheRejected,JSVM_Value *wasmModule)
5188```
5189
5190**描述**
5191
5192将 WebAssembly 字节码编译得到一个 WebAssembly 模块。如果提供了 WebAssembly 缓存,则会先尝试对缓存进行反序列化。如果没有 JIT 权限支持,则打印一行日志提示开发者。
5193
5194**起始版本:** 12
5195
5196
5197**参数:**
5198
5199| 参数项 | 描述 |
5200| -- | -- |
5201| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5202| const uint8_t *wasmBytecode | WebAssembly 字节码。 |
5203| size_t wasmBytecodeLength | WebAssembly 字节码的长度,单位:字节。 |
5204| const uint8_t *cacheData | 可选的 WebAssembly 缓存。 |
5205| size_t cacheDataLength | 可选的 WebAssembly 缓存长度,单位:字节。 |
5206| bool *cacheRejected | 输出参数,表示提供的 WebAssembly 缓存是否被引擎拒绝,true为是,false为否。 |
5207| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) *wasmModule | 输出参数,表示生成的 WebAssembly 模块。 |
5208
5209**返回:**
5210
5211| 类型 | 说明 |
5212| -- | -- |
5213| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示 env 或 wasmBytecode 参数为空,或传入的数据长度参数无效。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示编译失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示发生了异常。<br>         [JSVM_JIT_MODE_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示当前环境没有 JIT 权限支持。 |
5214
5215### OH_JSVM_CompileWasmFunction()
5216
5217```
5218JSVM_EXTERN JSVM_Status OH_JSVM_CompileWasmFunction(JSVM_Env env,JSVM_Value wasmModule,uint32_t functionIndex,JSVM_WasmOptLevel optLevel)
5219```
5220
5221**描述**
5222
5223对当前 WebAssembly 模块中指定索引的函数进行指定优化等级的编译优化。如果没有 JIT 权限支持,则打印一行日志提示开发者。
5224
5225**起始版本:** 12
5226
5227
5228**参数:**
5229
5230| 参数项 | 描述 |
5231| -- | -- |
5232| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5233| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) wasmModule | 待编译函数所在的 WebAssembly 模块。 |
5234| uint32_t functionIndex | 待编译函数的索引,索引必须位于合法范围。 |
5235| [JSVM_WasmOptLevel](capi-jsvm-types-h.md#jsvm_wasmoptlevel) optLevel | 优化等级,当前只支持高优化等级。 |
5236
5237**返回:**
5238
5239| 类型 | 说明 |
5240| -- | -- |
5241| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示 env 或 wasmModule 参数为空,或 wasmModule 不是一个真正的 WebAssembly 模块。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示函数索引越界,或编译失败。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示发生了异常。<br>         [JSVM_JIT_MODE_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示当前环境没有 JIT 权限支持。 |
5242
5243### OH_JSVM_IsWasmModuleObject()
5244
5245```
5246JSVM_EXTERN JSVM_Status OH_JSVM_IsWasmModuleObject(JSVM_Env env,JSVM_Value value,bool* result)
5247```
5248
5249**描述**
5250
5251判断给定的 JSVM_Value 是否是一个 WebAssembly 模块。
5252
5253**起始版本:** 12
5254
5255
5256**参数:**
5257
5258| 参数项 | 描述 |
5259| -- | -- |
5260| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5261| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的 JavaScript 值。 |
5262| bool* result | 输出参数,表示给定的值是否是一个 WebAssembly 模块,true为是,false为否。 |
5263
5264**返回:**
5265
5266| 类型 | 说明 |
5267| -- | -- |
5268| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5269
5270### OH_JSVM_CreateWasmCache()
5271
5272```
5273JSVM_EXTERN JSVM_Status OH_JSVM_CreateWasmCache(JSVM_Env env,JSVM_Value wasmModule,const uint8_t** data,size_t* length)
5274```
5275
5276**描述**
5277
5278为给定的 WebAssembly 模块生成缓存。如果没有 JIT 权限支持,则打印一行日志提示开发者。
5279
5280**起始版本:** 12
5281
5282
5283**参数:**
5284
5285| 参数项 | 描述 |
5286| -- | -- |
5287| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5288| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) wasmModule | 编译好的 WebAssembly 模块。 |
5289| const uint8_t** data | 输出参数,表示生成的 WebAssembly 缓存。 |
5290| size_t* length | 输出参数,表示生成的 WebAssembly 缓存的长度,单位:字节。 |
5291
5292**返回:**
5293
5294| 类型 | 说明 |
5295| -- | -- |
5296| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示缓存生成失败。<br>         [JSVM_JIT_MODE_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示当前环境没有 JIT 权限支持。 |
5297
5298### OH_JSVM_ReleaseCache()
5299
5300```
5301JSVM_EXTERN JSVM_Status OH_JSVM_ReleaseCache(JSVM_Env env,const uint8_t* cacheData,JSVM_CacheType cacheType)
5302```
5303
5304**描述**
5305
5306释放给定类型的缓存数据。
5307
5308**起始版本:** 12
5309
5310
5311**参数:**
5312
5313| 参数项 | 描述 |
5314| -- | -- |
5315| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5316| const uint8_t* cacheData | 待释放的缓存数据,重复释放是未定义行为。 |
5317| [JSVM_CacheType](capi-jsvm-types-h.md#jsvm_cachetype) cacheType | 缓存的类型,缓存的生成和释放必须一一对应。 |
5318
5319**返回:**
5320
5321| 类型 | 说明 |
5322| -- | -- |
5323| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数,或 cacheType 参数不合法。 |
5324
5325### OH_JSVM_IsBigIntObject()
5326
5327```
5328JSVM_EXTERN JSVM_Status OH_JSVM_IsBigIntObject(JSVM_Env env,JSVM_Value value,bool* result)
5329```
5330
5331**描述**
5332
5333判断给定的 JSVM_Value 是否是一个 BigInt对象。
5334
5335**起始版本:** 18
5336
5337
5338**参数:**
5339
5340| 参数项 | 描述 |
5341| -- | -- |
5342| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5343| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的 JavaScript 值。 |
5344| bool* result | 输出参数,表示给定的值是否是一个BigInt对象,true为是,false为否。 |
5345
5346**返回:**
5347
5348| 类型 | 说明 |
5349| -- | -- |
5350| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5351
5352### OH_JSVM_IsBooleanObject()
5353
5354```
5355JSVM_EXTERN JSVM_Status OH_JSVM_IsBooleanObject(JSVM_Env env,JSVM_Value value,bool* result)
5356```
5357
5358**描述**
5359
5360判断给定的 JSVM_Value 是否是一个 Boolean对象。
5361
5362**起始版本:** 18
5363
5364
5365**参数:**
5366
5367| 参数项 | 描述 |
5368| -- | -- |
5369| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5370| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的 JavaScript 值。 |
5371| bool* result | 输出参数,表示给定的值是否是一个Boolean对象,true为是,false为否。 |
5372
5373**返回:**
5374
5375| 类型 | 说明 |
5376| -- | -- |
5377| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5378
5379### OH_JSVM_IsStringObject()
5380
5381```
5382JSVM_EXTERN JSVM_Status OH_JSVM_IsStringObject(JSVM_Env env,JSVM_Value value,bool* result)
5383```
5384
5385**描述**
5386
5387判断给定的 JSVM_Value 是否是一个 String对象。
5388
5389**起始版本:** 18
5390
5391
5392**参数:**
5393
5394| 参数项 | 描述 |
5395| -- | -- |
5396| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5397| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的 JavaScript 值。 |
5398| bool* result | 输出参数,表示给定的值是否是一个String对象,true为是,false为否。 |
5399
5400**返回:**
5401
5402| 类型 | 说明 |
5403| -- | -- |
5404| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5405
5406### OH_JSVM_IsNumberObject()
5407
5408```
5409JSVM_EXTERN JSVM_Status OH_JSVM_IsNumberObject(JSVM_Env env,JSVM_Value value,bool* result)
5410```
5411
5412**描述**
5413
5414判断给定的 JSVM_Value 是否是一个 Number对象。
5415
5416**起始版本:** 18
5417
5418
5419**参数:**
5420
5421| 参数项 | 描述 |
5422| -- | -- |
5423| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5424| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的 JavaScript 值。 |
5425| bool* result | 输出参数,表示给定的值是否是一个Number对象,true为是,false为否。 |
5426
5427**返回:**
5428
5429| 类型 | 说明 |
5430| -- | -- |
5431| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5432
5433### OH_JSVM_IsSymbolObject()
5434
5435```
5436JSVM_EXTERN JSVM_Status OH_JSVM_IsSymbolObject(JSVM_Env env,JSVM_Value value,bool* result)
5437```
5438
5439**描述**
5440
5441判断给定的 JSVM_Value 是否是一个 Symbol对象。
5442
5443**起始版本:** 18
5444
5445
5446**参数:**
5447
5448| 参数项 | 描述 |
5449| -- | -- |
5450| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5451| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | 待检查的 JavaScript 值。 |
5452| bool* result | 输出参数,表示给定的值是否是一个Symbol对象,true为是,false为否。 |
5453
5454**返回:**
5455
5456| 类型 | 说明 |
5457| -- | -- |
5458| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5459
5460### OH_JSVM_GetSymbolAsyncIterator()
5461
5462```
5463JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolAsyncIterator(JSVM_Env env, JSVM_Value* result)
5464```
5465
5466**描述**
5467
5468获取Well-Known symbol里的Symbol.AsyncIterator能力。
5469
5470**起始版本:** 18
5471
5472
5473**参数:**
5474
5475| 参数项 | 描述 |
5476| -- | -- |
5477| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5478| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.AsyncIterator。 |
5479
5480**返回:**
5481
5482| 类型 | 说明 |
5483| -- | -- |
5484| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5485
5486### OH_JSVM_GetSymbolHasInstance()
5487
5488```
5489JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolHasInstance(JSVM_Env env, JSVM_Value* result)
5490```
5491
5492**描述**
5493
5494获取Well-Known symbol里的Symbol.HasInstance能力。
5495
5496**起始版本:** 18
5497
5498
5499**参数:**
5500
5501| 参数项 | 描述 |
5502| -- | -- |
5503| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5504| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.HasInstance。 |
5505
5506**返回:**
5507
5508| 类型 | 说明 |
5509| -- | -- |
5510| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5511
5512### OH_JSVM_GetSymbolIsConcatSpreadable()
5513
5514```
5515JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolIsConcatSpreadable(JSVM_Env env, JSVM_Value* result)
5516```
5517
5518**描述**
5519
5520获取Well-Known symbol里的Symbol.IsConcatSpreadable能力。
5521
5522**起始版本:** 18
5523
5524
5525**参数:**
5526
5527| 参数项 | 描述 |
5528| -- | -- |
5529| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5530| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.IsConcatSpreadable。 |
5531
5532**返回:**
5533
5534| 类型 | 说明 |
5535| -- | -- |
5536| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5537
5538### OH_JSVM_GetSymbolMatch()
5539
5540```
5541JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolMatch(JSVM_Env env, JSVM_Value* result)
5542```
5543
5544**描述**
5545
5546获取Well-Known symbol里的Symbol.Match能力。
5547
5548**起始版本:** 18
5549
5550
5551**参数:**
5552
5553| 参数项 | 描述 |
5554| -- | -- |
5555| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5556| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.Match。 |
5557
5558**返回:**
5559
5560| 类型 | 说明 |
5561| -- | -- |
5562| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5563
5564### OH_JSVM_GetSymbolReplace()
5565
5566```
5567JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolReplace(JSVM_Env env, JSVM_Value* result)
5568```
5569
5570**描述**
5571
5572获取Well-Known symbol里的Symbol.Replace能力。
5573
5574**起始版本:** 18
5575
5576
5577**参数:**
5578
5579| 参数项 | 描述 |
5580| -- | -- |
5581| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5582| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.Replace。 |
5583
5584**返回:**
5585
5586| 类型 | 说明 |
5587| -- | -- |
5588| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5589
5590### OH_JSVM_GetSymbolSearch()
5591
5592```
5593JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolSearch(JSVM_Env env, JSVM_Value* result)
5594```
5595
5596**描述**
5597
5598获取Well-Known symbol里的Symbol.Search能力。
5599
5600**起始版本:** 18
5601
5602
5603**参数:**
5604
5605| 参数项 | 描述 |
5606| -- | -- |
5607| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5608| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.Search。 |
5609
5610**返回:**
5611
5612| 类型 | 说明 |
5613| -- | -- |
5614| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5615
5616### OH_JSVM_GetSymbolSplit()
5617
5618```
5619JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolSplit(JSVM_Env env, JSVM_Value* result)
5620```
5621
5622**描述**
5623
5624获取Well-Known symbol里的Symbol.Split能力。
5625
5626**起始版本:** 18
5627
5628
5629**参数:**
5630
5631| 参数项 | 描述 |
5632| -- | -- |
5633| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5634| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.Split。 |
5635
5636**返回:**
5637
5638| 类型 | 说明 |
5639| -- | -- |
5640| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5641
5642### OH_JSVM_GetSymbolToPrimitive()
5643
5644```
5645JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolToPrimitive(JSVM_Env env, JSVM_Value* result)
5646```
5647
5648**描述**
5649
5650获取Well-Known symbol里的Symbol.ToPrimitive能力。
5651
5652**起始版本:** 18
5653
5654
5655**参数:**
5656
5657| 参数项 | 描述 |
5658| -- | -- |
5659| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5660| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.ToPrimitive。 |
5661
5662**返回:**
5663
5664| 类型 | 说明 |
5665| -- | -- |
5666| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5667
5668### OH_JSVM_GetSymbolUnscopables()
5669
5670```
5671JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolUnscopables(JSVM_Env env, JSVM_Value* result)
5672```
5673
5674**描述**
5675
5676获取Well-Known symbol里的Symbol.Unscopables能力。
5677
5678**起始版本:** 18
5679
5680
5681**参数:**
5682
5683| 参数项 | 描述 |
5684| -- | -- |
5685| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5686| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.Unscopables。 |
5687
5688**返回:**
5689
5690| 类型 | 说明 |
5691| -- | -- |
5692| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5693
5694### OH_JSVM_GetSymbolToStringTag()
5695
5696```
5697JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolToStringTag(JSVM_Env env, JSVM_Value* result)
5698```
5699
5700**描述**
5701
5702获取Well-Known symbol里的Symbol.ToStringTag能力。
5703
5704**起始版本:** 18
5705
5706
5707**参数:**
5708
5709| 参数项 | 描述 |
5710| -- | -- |
5711| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5712| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.ToStringTag。 |
5713
5714**返回:**
5715
5716| 类型 | 说明 |
5717| -- | -- |
5718| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5719
5720### OH_JSVM_GetSymbolIterator()
5721
5722```
5723JSVM_EXTERN JSVM_Status OH_JSVM_GetSymbolIterator(JSVM_Env env, JSVM_Value* result)
5724```
5725
5726**描述**
5727
5728获取Well-Known symbol里的Symbol.Iterator能力。
5729
5730**起始版本:** 18
5731
5732
5733**参数:**
5734
5735| 参数项 | 描述 |
5736| -- | -- |
5737| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
5738| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 输出参数,Well-Known symbol里的Symbol.Iterator。 |
5739
5740**返回:**
5741
5742| 类型 | 说明 |
5743| -- | -- |
5744| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入了空指针参数。 |
5745
5746### OH_JSVM_TraceStart()
5747
5748```
5749JSVM_EXTERN JSVM_Status OH_JSVM_TraceStart(size_t count,const JSVM_TraceCategory* categories,const char* tag,size_t eventsCount)
5750```
5751
5752**描述**
5753
5754对所有 JSVM 运行时实例,开始采集指定 Trace 类别的信息(线程不安全)。
5755
5756**起始版本:** 18
5757
5758
5759**参数:**
5760
5761| 参数项 | 描述 |
5762| -- | -- |
5763| size_t count | 进行 Trace 采集的分类数量。 |
5764| [const JSVM_TraceCategory](capi-jsvm-types-h.md#jsvm_tracecategory)* categories | 进行 Trace 采集的具体分类数组。 |
5765| const char* tag | 用户定义并赋予 Trace 数据的标签。 |
5766| size_t eventsCount | 存储的 Trace 事件数量上限。 |
5767
5768**返回:**
5769
5770| 类型 | 说明 |
5771| -- | -- |
5772| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。 。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) categories 或者 count 输入不合法。 |
5773
5774### OH_JSVM_TraceStop()
5775
5776```
5777JSVM_EXTERN JSVM_Status OH_JSVM_TraceStop(JSVM_OutputStream stream, void* streamData)
5778```
5779
5780**描述**
5781
5782对所有 JSVM 运行时,停止采集指定 Trace 类别的信息(线程不安全)。
5783
5784**起始版本:** 18
5785
5786
5787**参数:**
5788
5789| 参数项 | 描述 |
5790| -- | -- |
5791| [JSVM_OutputStream](capi-jsvm-types-h.md#jsvm_outputstream) stream | 输出流回调函数,实现接收 Trace 数据功能。 |
5792| void* streamData | 的输出流指针,用于辅助输出流回调函数进行数据输出。 |
5793
5794**返回:**
5795
5796| 类型 | 说明 |
5797| -- | -- |
5798| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。 。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) stream 或者 streamData 为空。 |
5799
5800### OH_JSVM_AddHandlerForGC()
5801
5802```
5803JSVM_EXTERN JSVM_Status OH_JSVM_AddHandlerForGC(JSVM_VM vm,JSVM_CBTriggerTimeForGC triggerTime,JSVM_HandlerForGC handler,JSVM_GCType gcType,void* userData)
5804```
5805
5806**描述**
5807
5808在VM中添加GC的回调函数。
5809
5810**起始版本:** 18
5811
5812
5813**参数:**
5814
5815| 参数项                                                                                 | 描述 |
5816|-------------------------------------------------------------------------------------| -- |
5817| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm                                              | 调用JSVM-API的环境。 |
5818| [JSVM_CBTriggerTimeForGC](capi-jsvm-types-h.md#jsvm_cbtriggertimeforgc) triggerTime | 触发GC回调函数的时机。 |
5819| [JSVM_HandlerForGC](capi-jsvm-types-h.md#jsvm_handlerforgc) handler                 | 当触发GC时,传入的回调函数会被调用。 |
5820| [JSVM_GCType](capi-jsvm-types-h.md#jsvm_gctype) gcType                              | GC类型。 |
5821| void* userData                                                                      | 原生指针数据。 |
5822
5823**返回:**
5824
5825| 类型 | 说明 |
5826| -- | -- |
5827| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示函数执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的vm或者handler为空或者handler已经被添加过了。 |
5828
5829### OH_JSVM_RemoveHandlerForGC()
5830
5831```
5832JSVM_EXTERN JSVM_Status OH_JSVM_RemoveHandlerForGC(JSVM_VM vm,JSVM_CBTriggerTimeForGC triggerTime,JSVM_HandlerForGC handler,void* userData)
5833```
5834
5835**描述**
5836
5837在VM中移除GC的回调函数。
5838
5839**起始版本:** 18
5840
5841
5842**参数:**
5843
5844| 参数项 | 描述 |
5845| -- | -- |
5846| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm | 调用JSVM-API的环境。 |
5847| [JSVM_CBTriggerTimeForGC](capi-jsvm-types-h.md#jsvm_cbtriggertimeforgc) triggerTime | 触发GC回调函数的时机。 |
5848| [JSVM_HandlerForGC](capi-jsvm-types-h.md#jsvm_handlerforgc) handler | 当触发GC时,传入的回调函数会被调用。 |
5849| void* userData | 原生指针数据。 |
5850
5851**返回:**
5852
5853| 类型 | 说明 |
5854| -- | -- |
5855| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示函数执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的vm或者handler为空或者handler已经被删除过了或者<br> 这个handler从来没有被添加过。 |
5856
5857### OH_JSVM_SetHandlerForOOMError()
5858
5859```
5860JSVM_EXTERN JSVM_Status OH_JSVM_SetHandlerForOOMError(JSVM_VM vm,JSVM_HandlerForOOMError handler)
5861```
5862
5863**描述**
5864
5865为OOM错误设置回调处理。当接口被重复调用时,仅最后一次生效。当传入的handler为null时,表示取消之前的设置。
5866
5867**起始版本:** 18
5868
5869
5870**参数:**
5871
5872| 参数项                                                                             | 描述 |
5873|---------------------------------------------------------------------------------| -- |
5874| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm                                          | 调用JSVM-API的环境。 |
5875| [JSVM_HandlerForOOMError](capi-jsvm-types-h.md#jsvm_handlerforoomerror) handler | OOM错误的处理器。 |
5876
5877**返回:**
5878
5879| 类型 | 说明 |
5880| -- | -- |
5881| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示函数执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示vm为空。 |
5882
5883### OH_JSVM_SetDebugOption()
5884
5885```
5886JSVM_EXTERN JSVM_Status OH_JSVM_SetDebugOption(JSVM_Env env, JSVM_DebugOption debugOption, bool isEnabled)
5887```
5888
5889**描述**
5890
5891启用/禁用特定JSVM_Env的指定调试选项。
5892
5893**起始版本:** 20
5894
5895
5896**参数:**
5897
5898| 参数项 | 描述 |
5899| -- | -- |
5900| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
5901| [JSVM_DebugOption](capi-jsvm-types-h.md#jsvm_debugoption) debugOption | 需要更改的调试选项。 |
5902| bool isEnabled | 是否启用或禁用调试选项,true为是,false为否。 |
5903
5904**返回:**
5905
5906| 类型 | 说明 |
5907| -- | -- |
5908| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示函数执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 如果传入的env为空指针,返回此错误码。 |
5909
5910### OH_JSVM_SetHandlerForFatalError()
5911
5912```
5913JSVM_EXTERN JSVM_Status OH_JSVM_SetHandlerForFatalError(JSVM_VM vm,JSVM_HandlerForFatalError handler)
5914```
5915
5916**描述**
5917
5918为Fatal错误设置回调处理。当接口被重复调用时,仅最后一次生效。当传入的handler为null时,表示取消之前的设置。
5919
5920**起始版本:** 18
5921
5922
5923**参数:**
5924
5925| 参数项                                                                                 | 描述 |
5926|-------------------------------------------------------------------------------------| -- |
5927| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm                                              | 调用JSVM-API的环境。 |
5928| [JSVM_HandlerForFatalError](capi-jsvm-types-h.md#jsvm_handlerforfatalerror) handler | Fatal错误的处理器。 |
5929
5930**返回:**
5931
5932| 类型 | 说明 |
5933| -- | -- |
5934| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示函数执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示vm为空。 |
5935
5936### OH_JSVM_SetHandlerForPromiseReject()
5937
5938```
5939JSVM_EXTERN JSVM_Status OH_JSVM_SetHandlerForPromiseReject(JSVM_VM vm,JSVM_HandlerForPromiseReject handler)
5940```
5941
5942**描述**
5943
5944为PromiseReject错误设置回调处理。当接口被重复调用时,仅最后一次生效。当传入的handler为null时,表示取消之前的设置。
5945
5946**起始版本:** 18
5947
5948
5949**参数:**
5950
5951| 参数项                                                                                       | 描述 |
5952|-------------------------------------------------------------------------------------------| -- |
5953| [JSVM_VM](capi-jsvm-jsvm-vm--8h.md) vm                                                    | 调用JSVM-API的环境。 |
5954| [JSVM_HandlerForPromiseReject](capi-jsvm-types-h.md#jsvm_handlerforpromisereject) handler | PromiseReject错误的处理器。 |
5955
5956**返回:**
5957
5958| 类型 | 说明 |
5959| -- | -- |
5960| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示函数执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示vm为空。 |
5961
5962### OH_JSVM_DefineClassWithOptions()
5963
5964```
5965JSVM_EXTERN JSVM_Status OH_JSVM_DefineClassWithOptions(JSVM_Env env,const char* utf8name,size_t length,JSVM_Callback constructor,size_t propertyCount,const JSVM_PropertyDescriptor* properties,JSVM_Value parentClass,size_t optionCount,JSVM_DefineClassOptions options[],JSVM_Value* result)
5966```
5967
5968**描述**
5969
5970在封装一个 C++ 类时,通过构造函数传递的 C++ 构造函数回调应该是类中的一个静态方法,该方法调用实际的类构造函数,然后根据传入的不同选项,将新的 C++ 实例封装在一个 JavaScript 对象中并返回封装对象。
5971
5972**起始版本:** 18
5973
5974
5975**参数:**
5976
5977| 参数项                                                                               | 描述 |
5978|-----------------------------------------------------------------------------------| -- |
5979| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env                                         | 调用JSVM-API的环境。 |
5980| const char* utf8name                                                              | JavaScript构造函数的名称,建议在包装C++类时使用C++类名。 |
5981| size_t length                                                                     | utf8name的长度(以字节为单位)或JSVM_AUTO_LENGTH(如果以 null 结尾)。 |
5982| [JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md) constructor                     | 用于创建类的构造函数的回调函数。包装C++类时,此方法必须是符合JSVM_Callback。callback签名的静态成员。不能使用C++类构造函数。详情请参考[JSVM_Callback](capi-jsvm-jsvm-callbackstruct.md)。 |
5983| size_t propertyCount                                                              | properties数组参数中的项目数量。 |
5984| [const JSVM_PropertyDescriptor](capi-jsvm-jsvm-propertydescriptor.md)* properties | 类的属性描述符,用于定义类的属性和方法。 |
5985| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) parentClass             | 当前所定义的class的父类class。 |
5986| size_t optionCount                                                                | options数组参数中的项目数量。 |
5987| [JSVM_DefineClassOptions](capi-jsvm-jsvm-defineclassoptions.md) options[]                                             | 传入的用于定义class的选项数组。 |
5988| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result                 | 表示类的构造函数的JSVM_Value。 |
5989
5990**返回:**
5991
5992| 类型 | 说明 |
5993| -- | -- |
5994| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入的指针参数里面存在空指针。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示传入的utf8name | constructor | properties无效,导致执行失败。 |
5995
5996### OH_JSVM_CreateExternalStringLatin1()
5997
5998```
5999JSVM_Status JSVM_CDECL OH_JSVM_CreateExternalStringLatin1(JSVM_Env env,char* str,size_t length,JSVM_Finalize finalizeCallback,void* finalizeHint,JSVM_Value* result,bool* copied)
6000```
6001
6002**描述**
6003
6004此 API 使用 ISO-8859-1 编码的 C 字符串,创建一个外部的 JavaScript 字符串。创建外部字符串失败时会复制原生字符串。
6005
6006**起始版本:** 12
6007
6008
6009**参数:**
6010
6011| 参数项 | 描述 |
6012| -- | -- |
6013| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
6014| char* str | 指向 ISO-8859-1 编码字符串的指针。 |
6015| size_t length | 字符串的字节长度,如果是空终止字符串可以直接传入 JSVM_AUTO_LENGTH。 |
6016| [JSVM_Finalize](capi-jsvm-types-h.md#jsvm_finalize) finalizeCallback | 可选项,是当创建的字符串被 GC 回收时会触发的回调函数。更多细节详见 JSVM_Finalize 类型说明。 |
6017| void* finalizeHint | 可选项,当字符串被回收时会传递给触发的 finalize callback。 |
6018| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result | 接收创建完成的 JavaScript 外部字符串,表示为 JSVM_Value 类型。 |
6019| bool* copied | 指示外部字符串是否成功创建的标志,true表示创建外部字符串失败并返回一个原生 JS 字符串,false表示成功。 |
6020
6021**返回:**
6022
6023| 类型 | 说明 |
6024| -- | -- |
6025| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数中 env, str 和 copied 中任一值为空。 |
6026
6027### OH_JSVM_CreateExternalStringUtf16()
6028
6029```
6030JSVM_Status JSVM_CDECL OH_JSVM_CreateExternalStringUtf16(JSVM_Env env,char16_t* str,size_t length,JSVM_Finalize finalizecallback,void* finalizeHint,JSVM_Value* result,bool* copied)
6031```
6032
6033**描述**
6034
6035此 API 使用 UTF16-LE 编码的 C 字符串,创建一个外部的 JavaScript 字符串。创建外部字符串失败时会复制原生字符串。
6036
6037**起始版本:** 12
6038
6039
6040**参数:**
6041
6042| 参数项                                                                  | 描述 |
6043|----------------------------------------------------------------------| -- |
6044| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env                            | 调用 JSVM-API 的环境。 |
6045| char16_t* str                                                        | 指向 UTF16-LE 编码字符串的指针。 |
6046| size_t length                                                        | 字符串的字节长度,如果是空终止字符串可以直接传入 JSVM_AUTO_LENGTH。 |
6047| [JSVM_Finalize](capi-jsvm-types-h.md#jsvm_finalize) finalizeCallback | 可选项,是当创建的字符串被 GC 回收时会触发的回调函数。更多细节详见 JSVM_Finalize 类型说明。 |
6048| void* finalizeHint                                                   | 可选项,当字符串被回收时会传递给触发的 finalize callback。 |
6049| [JSVM_Value](capi-jsvm-jsvm-value--8h.md)* result    | 接收创建完成的 JavaScript 外部字符串,表示为 JSVM_Value 类型。 |
6050| bool* copied                                                         | 指示外部字符串是否成功创建的标志,true表示创建外部字符串失败并返回一个原生 JS 字符串,false表示成功。 |
6051
6052**返回:**
6053
6054| 类型 | 说明 |
6055| -- | -- |
6056| [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) JSVM_CDECL | 返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数中 env, str 和 copied 中任一值为空。 |
6057
6058### OH_JSVM_CreatePrivate()
6059
6060```
6061JSVM_EXTERN JSVM_Status OH_JSVM_CreatePrivate(JSVM_Env env,JSVM_Value description,JSVM_Data* result)
6062```
6063
6064**描述**
6065
6066创建一个 JavaScript private key 对象。
6067
6068**起始版本:** 12
6069
6070
6071**参数:**
6072
6073| 参数项 | 描述 |
6074| -- | -- |
6075| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
6076| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) description | 可选项,它指的是要作为 private key 描述的 JavaScript 字符串。 |
6077| [JSVM_Data](capi-jsvm-jsvm-data--8h.md)* result | 接收创建成功的 JavaScript private key 对象的指针。 |
6078
6079**返回:**
6080
6081| 类型 | 说明 |
6082| -- | -- |
6083| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示传入参数中 env 和 result 中任一值为空。<br>         [JSVM_STRING_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的 description 不是字符串。 |
6084
6085### OH_JSVM_SetPrivate()
6086
6087```
6088JSVM_EXTERN JSVM_Status OH_JSVM_SetPrivate(JSVM_Env env,JSVM_Value object,JSVM_Data key,JSVM_Value value)
6089```
6090
6091**描述**
6092
6093为传入的object设置一个 private 属性。
6094
6095**起始版本:** 12
6096
6097
6098**参数:**
6099
6100| 参数项 | 描述 |
6101| -- | -- |
6102| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
6103| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 将要进行 private 属性设置的对象。 |
6104| [JSVM_Data](capi-jsvm-jsvm-data--8h.md) key | private 属性的 private key 对象。 |
6105| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) value | private 属性值。 |
6106
6107**返回:**
6108
6109| 类型 | 说明 |
6110| -- | -- |
6111| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示任一传入参数为空或者 key 不是一个 private key 对象。<br>         [JSVM_OBJECT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的 object 不是一个真正的 JavaScript object。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示设置 private 属性失败,同时没有异常产生。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示发生了异常。 |
6112
6113### OH_JSVM_GetPrivate()
6114
6115```
6116JSVM_EXTERN JSVM_Status OH_JSVM_GetPrivate(JSVM_Env env,JSVM_Value object,JSVM_Data key,JSVM_Value *result)
6117```
6118
6119**描述**
6120
6121从传入的object获取 private key 对应的 private 属性。
6122
6123**起始版本:** 12
6124
6125
6126**参数:**
6127
6128| 参数项 | 描述 |
6129| -- | -- |
6130| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
6131| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 获取 private 属性的对象。 |
6132| [JSVM_Data](capi-jsvm-jsvm-data--8h.md) key | private 属性的 private key 对象。 |
6133| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) *result | private 属性值。 |
6134
6135**返回:**
6136
6137| 类型 | 说明 |
6138| -- | -- |
6139| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示任一传入参数为空或者 key 不是一个 private key 对象。<br>         [JSVM_OBJECT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的 object 不是一个真正的 JavaScript object。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示获取 private 属性失败,同时没有异常产生。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示发生了异常。 |
6140
6141### OH_JSVM_DeletePrivate()
6142
6143```
6144JSVM_EXTERN JSVM_Status OH_JSVM_DeletePrivate(JSVM_Env env,JSVM_Value object,JSVM_Data key)
6145```
6146
6147**描述**
6148
6149从传入的 object 上删除 private key 对应的 private 属性。
6150
6151**起始版本:** 12
6152
6153
6154**参数:**
6155
6156| 参数项 | 描述 |
6157| -- | -- |
6158| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
6159| [JSVM_Value](capi-jsvm-jsvm-value--8h.md) object | 删除 private 属性的对象。 |
6160| [JSVM_Data](capi-jsvm-jsvm-data--8h.md) key | private 属性的 private key 对象。 |
6161
6162**返回:**
6163
6164| 类型 | 说明 |
6165| -- | -- |
6166| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。<br>         [JSVM_INVALID_ARG](capi-jsvm-types-h.md#jsvm_status) 表示任一传入参数为空或者 key 不是一个 private key 对象。<br>         [JSVM_OBJECT_EXPECTED](capi-jsvm-types-h.md#jsvm_status) 表示传入的 object 不是一个真正的 JavaScript object。<br>         [JSVM_GENERIC_FAILURE](capi-jsvm-types-h.md#jsvm_status) 表示删除 private 属性失败,同时没有异常产生。<br>         [JSVM_PENDING_EXCEPTION](capi-jsvm-types-h.md#jsvm_status) 表示发生了异常。 |
6167
6168### OH_JSVM_CreateDataReference()
6169
6170```
6171JSVM_EXTERN JSVM_Status OH_JSVM_CreateDataReference(JSVM_Env env,JSVM_Data data,uint32_t initialRefcount,JSVM_Ref* result)
6172```
6173
6174**描述**
6175
6176创建一个对于给定 JSVM_Data 对象的引用,初始的引用计数为传入的 initialRefcount。
6177
6178**起始版本:** 12
6179
6180
6181**参数:**
6182
6183| 参数项 | 描述 |
6184| -- | -- |
6185| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用 JSVM-API 的环境。 |
6186| [JSVM_Data](capi-jsvm-jsvm-data--8h.md) data | 将要创建引用的 JSVM_Data 对象。 |
6187| uint32_t initialRefcount | 初始引用计数值。 |
6188| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md)* result | 接收新创建的对象引用,表示为 JSVM_Ref 类型。 |
6189
6190**返回:**
6191
6192| 类型 | 说明 |
6193| -- | -- |
6194| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
6195
6196### OH_JSVM_GetReferenceData()
6197
6198```
6199JSVM_EXTERN JSVM_Status OH_JSVM_GetReferenceData(JSVM_Env env,JSVM_Ref ref,JSVM_Data* result)
6200EXTERN_C_END
6201```
6202
6203**描述**
6204
6205如果引用仍然有效,通过 result 参数返回对应的 JSVM_Data,表示与 JSVM_Ref 关联的 JavaScript 值。否则结果将为空。
6206
6207**起始版本:** 12
6208
6209
6210**参数:**
6211
6212| 参数项 | 描述 |
6213| -- | -- |
6214| [JSVM_Env](capi-jsvm-jsvm-env--8h.md) env | 调用JSVM-API的环境。 |
6215| [JSVM_Ref](capi-jsvm-jsvm-ref--8h.md) ref | 请求相应值的JSVM_Ref。 |
6216| [JSVM_Data](capi-jsvm-jsvm-data--8h.md)* result | JSVM_Ref 引用的 JSVM_Data。 |
6217
6218**返回:**
6219
6220| 类型 | 说明 |
6221| -- | -- |
6222| JSVM_EXTERN [JSVM_Status](capi-jsvm-types-h.md#jsvm_status) |  返回执行状态码 JSVM_Status。<br>         [JSVM_OK](capi-jsvm-types-h.md#jsvm_status) 表示执行成功。 |
6223
6224
6225