1# jsvm.h
2
3
4## 概述
5
6提供JSVM-API接口定义。
7
8通过API接口为开发者提供独立、标准、完整的JavaScript引擎能力, 包括管理引擎生命周期、编译运行JS代码、实现JS/C++跨语言调用、拍摄快照等。
9
10**库:** libjsvm.so
11
12**系统能力:** SystemCapability.ArkCompiler.JSVM
13
14**起始版本:** 11
15
16**相关模块:**[JSVM](_j_s_v_m.md)
17
18
19## 汇总
20
21
22### 宏定义
23
24| 名称 | 描述 |
25| -------- | -------- |
26| **JSVM_VERSION_EXPERIMENTAL**   2147483647 |  |
27| **JSVM_VERSION**   8 |  |
28| **JSVM_EXTERN**   __attribute__((visibility("default"))) |  |
29| [JSVM_AUTO_LENGTH](_j_s_v_m.md#jsvm_auto_length)   SIZE_MAX | 自动长度。  |
30| **EXTERN_C_START** |  |
31| **EXTERN_C_END** |  |
32
33
34### 函数
35
36| 名称 | 描述 |
37| -------- | -------- |
38| EXTERN_C_START JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Init](_j_s_v_m.md#oh_jsvm_init) (const [JSVM_InitOptions](_j_s_v_m___init_options.md) \*options) | 初始化一个JavaScript虚拟机。  |
39| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateVM](_j_s_v_m.md#oh_jsvm_createvm) (const [JSVM_CreateVMOptions](_j_s_v_m___create_v_m_options.md) \*options, [JSVM_VM](_j_s_v_m.md#jsvm_vm) \*result) | 创建一个虚拟机实例。  |
40| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DestroyVM](_j_s_v_m.md#oh_jsvm_destroyvm) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm) | 销毁一个虚拟机实例。  |
41| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenVMScope](_j_s_v_m.md#oh_jsvm_openvmscope) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_VMScope](_j_s_v_m.md#jsvm_vmscope) \*result) | 为虚拟机实例打开一个新的虚拟机作用域。  |
42| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseVMScope](_j_s_v_m.md#oh_jsvm_closevmscope) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_VMScope](_j_s_v_m.md#jsvm_vmscope) scope) | 关闭虚拟机实例的虚拟机作用域。  |
43| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateEnv](_j_s_v_m.md#oh_jsvm_createenv) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties, [JSVM_Env](_j_s_v_m.md#jsvm_env) \*result) | 基于新环境上下文的可选属性,创建一个新环境。  |
44| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateEnvFromSnapshot](_j_s_v_m.md#oh_jsvm_createenvfromsnapshot) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, size_t index, [JSVM_Env](_j_s_v_m.md#jsvm_env) \*result) | 基于虚拟机的起始快照,创建一个新的环境。  |
45| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DestroyEnv](_j_s_v_m.md#oh_jsvm_destroyenv) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env) | 销毁环境。  |
46| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenEnvScope](_j_s_v_m.md#oh_jsvm_openenvscope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EnvScope](_j_s_v_m.md#jsvm_envscope) \*result) | 打开一个新的环境作用域。  |
47| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseEnvScope](_j_s_v_m.md#oh_jsvm_closeenvscope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EnvScope](_j_s_v_m.md#jsvm_envscope) scope) | 关闭环境作用域。  |
48| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetVM](_j_s_v_m.md#oh_jsvm_getvm) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_VM](_j_s_v_m.md#jsvm_vm) \*result) | 将检索给定环境的虚拟机实例。  |
49| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileScript](_j_s_v_m.md#oh_jsvm_compilescript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, const uint8_t \*cachedData, size_t cacheDataLength, bool eagerCompile, bool \*cacheRejected, [JSVM_Script](_j_s_v_m.md#jsvm_script) \*result) | 编译一串JavaScript代码,并返回编译后的脚本。  |
50| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileScriptWithOrigin](_j_s_v_m.md#oh_jsvm_compilescriptwithorigin) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, const uint8_t \*cachedData, size_t cacheDataLength, bool eagerCompile, bool \*cacheRejected, [JSVM_ScriptOrigin](_j_s_v_m___script_origin.md) \*origin, [JSVM_Script](_j_s_v_m.md#jsvm_script) \*result) | 编译一串包含 sourcemap 信息的 JavaScript 代码,并返回编译后的脚本。  |
51| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileScriptWithOptions](_j_s_v_m.md#oh_jsvm_compilescriptwithoptions) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, size_t optionCount, JSVM_CompileOptions options[], [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 编译一串JavaScript代码,并返回编译后的脚本。  |
52| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateCodeCache](_j_s_v_m.md#oh_jsvm_createcodecache) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script, const uint8_t \*\*data, size_t \*length) | 为编译后的脚本创建代码缓存。  |
53| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RunScript](_j_s_v_m.md#oh_jsvm_runscript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 执行一串JavaScript代码并返回其结果,其中包含以下注意事项: 与eval不同的是,该函数不允许脚本访问当前词法作用域,因此也不允许访问模块作用域, 这意味着require等伪全局变量将不可用。 脚本可以访问全局作用域。 脚本中的函数和var声明将被添加到全局对象。 使用let和const的变量声明将全局可见,但不会被添加到全局对象。 this的值在脚本内是global。  |
54| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetInstanceData](_j_s_v_m.md#oh_jsvm_setinstancedata) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*data, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint) | 将data与当前运行的JSVM环境相关联。后续可以使用OH_JSVM_GetInstanceData()检索data。 通过先前调用OH_JSVM_SetInstanceData()设置的任何与当前运行的JSVM环境相关联的现有数据都将 被覆盖。如果先前提供了finalizeCb,则不会调用它。  |
55| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetInstanceData](_j_s_v_m.md#oh_jsvm_getinstancedata) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*\*data) | 检索通过OH_JSVM_SetInstanceData()与当前运行的JSVM环境相关联的数据。 如果未设置任何关联数据,该函数调用将成功,且data设置为NULL。  |
56| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetLastErrorInfo](_j_s_v_m.md#oh_jsvm_getlasterrorinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const [JSVM_ExtendedErrorInfo](_j_s_v_m___extended_error_info.md) \*\*result) | 检索JSVM_ExtendedErrorInfo结构,其中包含有关发生的最后一个错误的信息。 返回的JSVM_ExtendedErrorInfo的内容仅在对同一env调用JSVM-API函数之前有效。 这包括对OH_JSVM_IsExceptionPending的调用,因此可能经常需要复制信息以便以后使用。 error_message中返回的指针指向一个静态定义的字符串,因此如果你在调用另一个JSVM-API 函数之前将它从error_message字段(将被覆盖)中复制出来,则可以安全地使用该指针。  |
57| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Throw](_j_s_v_m.md#oh_jsvm_throw) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) error) | 抛出提供的JavaScript值。  |
58| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowError](_j_s_v_m.md#oh_jsvm_throwerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | 会抛出带有所提供文本的JavaScript Error。  |
59| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowTypeError](_j_s_v_m.md#oh_jsvm_throwtypeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | 会抛出带有所提供文本的JavaScript TypeError。  |
60| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowRangeError](_j_s_v_m.md#oh_jsvm_throwrangeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | 会抛出带有所提供文本的JavaScript RangeError。  |
61| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowSyntaxError](_j_s_v_m.md#oh_jsvm_throwsyntaxerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | 会抛出带有所提供文本的JavaScript SyntaxError。  |
62| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsError](_j_s_v_m.md#oh_jsvm_iserror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 查询JSVM_Value以检查它是否表示错误对象。  |
63| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateError](_j_s_v_m.md#oh_jsvm_createerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回带有所提供文本的JavaScript Error。  |
64| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateTypeError](_j_s_v_m.md#oh_jsvm_createtypeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回带有所提供文本的JavaScript TypeError。  |
65| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateRangeError](_j_s_v_m.md#oh_jsvm_createrangeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回带有所提供文本的JavaScript RangeError。  |
66| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSyntaxError](_j_s_v_m.md#oh_jsvm_createsyntaxerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回带有所提供文本的JavaScript SyntaxError。  |
67| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetAndClearLastException](_j_s_v_m.md#oh_jsvm_getandclearlastexception) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 获取并清除上一次异常。如果出现挂起,则返回JavaScript异常,否则返回NULL。  |
68| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsExceptionPending](_j_s_v_m.md#oh_jsvm_isexceptionpending) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, bool \*result) | 查询上一次异常是否由挂起导致的。如果由异常导致,则返回true,否则返回false。  |
69| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenHandleScope](_j_s_v_m.md#oh_jsvm_openhandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_HandleScope](_j_s_v_m.md#jsvm_handlescope) \*result) | 开辟了一个新的作用域。  |
70| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseHandleScope](_j_s_v_m.md#oh_jsvm_closehandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_HandleScope](_j_s_v_m.md#jsvm_handlescope) scope) | 关闭传入的作用域。必须按照创建作用域的相反顺序关闭作用域。  |
71| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenEscapableHandleScope](_j_s_v_m.md#oh_jsvm_openescapablehandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EscapableHandleScope](_j_s_v_m.md#jsvm_escapablehandlescope) \*result) | 会打开一个新作用域,从中可以将一个对象提升到外部作用域。  |
72| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseEscapableHandleScope](_j_s_v_m.md#oh_jsvm_closeescapablehandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EscapableHandleScope](_j_s_v_m.md#jsvm_escapablehandlescope) scope) | 关闭传入的作用域。必须按照创建作用域的相反顺序关闭作用域。 即使存在挂起的JavaScript异常,也可以调用此JSVM_API。  |
73| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_EscapeHandle](_j_s_v_m.md#oh_jsvm_escapehandle) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EscapableHandleScope](_j_s_v_m.md#jsvm_escapablehandlescope) scope, [JSVM_Value](_j_s_v_m.md#jsvm_value) escapee, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 提升JavaScript对象的句柄,使其在外部作用域的生命周期内有效。 每个作用域只能调用一次。如果多次调用,将返回错误。  |
74| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateReference](_j_s_v_m.md#oh_jsvm_createreference) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint32_t initialRefcount, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) \*result) | 对传入的值创建一个具有指定引用计数的新引用。  |
75| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DeleteReference](_j_s_v_m.md#oh_jsvm_deletereference) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref) | 删除传入的引用。  |
76| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReferenceRef](_j_s_v_m.md#oh_jsvm_referenceref) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref, uint32_t \*result) | 增加传入引用的引用计数并返回生成的引用计数。  |
77| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReferenceUnref](_j_s_v_m.md#oh_jsvm_referenceunref) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref, uint32_t \*result) | 递减传入引用的引用计数并返回生成的引用计数。  |
78| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetReferenceValue](_j_s_v_m.md#oh_jsvm_getreferencevalue) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 如果仍然有效,此JSVM-API将返回JSVM_Value, 表示与JSVM_Ref关联的JavaScript值。否则,结果将为NULL。  |
79| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateArray](_j_s_v_m.md#oh_jsvm_createarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回对应于JavaScript Array类型的JSVM-API值。  |
80| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateArrayWithLength](_j_s_v_m.md#oh_jsvm_createarraywithlength) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回对应于JavaScript Array类型的JSVM-API值。Array 的长度属性设置为传入的长度参数。但是,不保证底层缓冲区在创建 数组时由VM预先分配。该行为留给底层VM实现。  |
81| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateArraybuffer](_j_s_v_m.md#oh_jsvm_createarraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, size_t byteLength, void \*\*data, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回JavaScript ArrayBuffer类型对应的JSVM-API值。ArrayBuffer用于 表示固定长度的二进制数据缓冲区。通常用作TypedArray对象的后备缓冲区。 分配的ArrayBuffer有一个底层字节缓冲区,其大小由传入的length参数决定。 底层缓冲区可选择返回给调用方,调用方可直接操作该缓冲区。 此缓冲区只能直接从native代码写入。如果想从JavaScript写入该缓冲区, 需创建TypedArray或DataView对象。  |
82| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_AllocateArrayBufferBackingStoreData](_j_s_v_m.md#oh_jsvm_allocatearraybufferbackingstoredata) (size_t byteLength, [JSVM_InitializedFlag](_j_s_v_m.md#jsvm_initializedflag) initialized, void \*\*data) | 申请一段给 array buffer 使用的 BackingStore 内存。  |
83| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_FreeArrayBufferBackingStoreData](_j_s_v_m.md#oh_jsvm_freearraybufferbackingstoredata) (void \*data) | 释放由 OH_JSVM_AllocateArrayBufferBackingStoreData 申请的 BackingStore 内存。  |
84| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_CreateArrayBufferFromBackingStoreData](_j_s_v_m.md#oh_jsvm_createarraybufferfrombackingstoredata) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*data, size_t backingStoreSize, size_t offset, size_t arrayBufferSize, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 在申请得到的 BackingStore 内存上创建 array buffer。  |
85| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateDate](_j_s_v_m.md#oh_jsvm_createdate) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, double time, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 分配一个JavaScript Date对象。此API不处理闰秒。 这是因为ECMAScript遵循POSIX时间规范,对闰秒进行忽略。  |
86| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateExternal](_j_s_v_m.md#oh_jsvm_createexternal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*data, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 分配一个带有外部数据的JavaScript值。这用于通过JavaScript代码传递外部数据。 后续可以使用OH_JSVM_GetValueExternal由native代码检索。 该API添加了一个JSVM_Finalize回调,当刚刚创建的JavaScript对象被垃圾回收时将调用该回调。 创建的值不是一个对象,因此不支持附加属性。它被认为是一个独特的值类型: 使用外部值调用OH_JSVM_Typeof()会生成JSVM_EXTERNAL。  |
87| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateObject](_j_s_v_m.md#oh_jsvm_createobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 分配一个默认的JavaScript对象。该函数功能等同于在JavaScript中执行new Object()。  |
88| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSymbol](_j_s_v_m.md#oh_jsvm_createsymbol) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) description, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 从UTF8 编码的C字符串创建JavaScript symbol值。  |
89| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SymbolFor](_j_s_v_m.md#oh_jsvm_symbolfor) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8description, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 在全局注册表中搜索具有给定描述的现有符号。如果该 符号已经存在,它将被返回,否则将在注册表中创建一个新符号。  |
90| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateTypedarray](_j_s_v_m.md#oh_jsvm_createtypedarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_TypedarrayType](_j_s_v_m.md#jsvm_typedarraytype) type, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer, size_t byteOffset, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 基于已有的ArrayBuffer对象,创建一个JavaScript TypedArray对象。TypedArray 对象在底层数据缓冲区上提供了一个类似数组的视图,其中每个元素都具有 相同的底层二进制标量数据类型。要求:(length\* 元素大小)+ byteOffset 小于等于传入的数组的大小(以字节为单位)。否则,将抛出范围错误(RangeError)。  |
91| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateDataview](_j_s_v_m.md#oh_jsvm_createdataview) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer, size_t byteOffset, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 基于已有的ArrayBuffer对象,创建一个JavaScript DataView对象。DataView 对象在底层数据缓冲区上提供了一个类似数组的视图,其中的元素可以具有不同的大小和类型。 要求:二进制的length + byteOffset 小于或等于传入的数组的大小(以字节为单位)。否则,将抛出范围错误(RangeError)。  |
92| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateInt32](_j_s_v_m.md#oh_jsvm_createint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int32_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将C int32_t类型的值转换为JavaScript number类型。  |
93| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateUint32](_j_s_v_m.md#oh_jsvm_createuint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, uint32_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将C uint32_t类型的值转换为JavaScript number类型。  |
94| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateInt64](_j_s_v_m.md#oh_jsvm_createint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int64_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将C int64_t类型的值转换为JavaScript number类型。  |
95| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateDouble](_j_s_v_m.md#oh_jsvm_createdouble) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, double value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将C double类型的值转换为JavaScript number类型。  |
96| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateBigintInt64](_j_s_v_m.md#oh_jsvm_createbigintint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int64_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将C int64_t类型的值转换为JavaScript BigInt类型。  |
97| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateBigintUint64](_j_s_v_m.md#oh_jsvm_createbigintuint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, uint64_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将C uint64_t类型的值转换为JavaScript BigInt类型。  |
98| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateBigintWords](_j_s_v_m.md#oh_jsvm_createbigintwords) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int signBit, size_t wordCount, const uint64_t \*words, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将一组无符号64位字转换为单个BigInt值。  |
99| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateStringLatin1](_j_s_v_m.md#oh_jsvm_createstringlatin1) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*str, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将采用ISO-8859-1编码的C字符串转换为JavaScript string值。 复制原生字符串。  |
100| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateStringUtf16](_j_s_v_m.md#oh_jsvm_createstringutf16) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char16_t \*str, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将采用UTF16-LE编码的C字符串转换为JavaScript字符串值。 复制原生字符串。  |
101| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateStringUtf8](_j_s_v_m.md#oh_jsvm_createstringutf8) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*str, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 从UTF8编码的C字符串创建JavaScript string值。 复制原生字符串。  |
102| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetArrayLength](_j_s_v_m.md#oh_jsvm_getarraylength) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint32_t \*result) | 返回数组的长度。  |
103| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetArraybufferInfo](_j_s_v_m.md#oh_jsvm_getarraybufferinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer, void \*\*data, size_t \*byteLength) | 用于检索ArrayBuffer的底层数据缓冲区及其长度。  |
104| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetPrototype](_j_s_v_m.md#oh_jsvm_getprototype) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回对象的原型。  |
105| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetTypedarrayInfo](_j_s_v_m.md#oh_jsvm_gettypedarrayinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) typedarray, [JSVM_TypedarrayType](_j_s_v_m.md#jsvm_typedarraytype) \*type, size_t \*length, void \*\*data, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*arraybuffer, size_t \*byteOffset) | 返回类型化数组的各种属性。如果不需要该属性,则任何输出参数都可以是 NULL。  |
106| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetDataviewInfo](_j_s_v_m.md#oh_jsvm_getdataviewinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) dataview, size_t \*bytelength, void \*\*data, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*arraybuffer, size_t \*byteOffset) | 返回DataView的各种属性。 如果不需要某一属性,则任何出参都可以设置为NULL。  |
107| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetDateValue](_j_s_v_m.md#oh_jsvm_getdatevalue) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, double \*result) | 返回给定JavaScript Date的时间值的C双精度基础类型。如果调用成功,返回JSVM_OK。 如果传入一个非JavaScript Date类型的JSVM_Value,返回JSVM_DATA_EXPECTED。  |
108| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBool](_j_s_v_m.md#oh_jsvm_getvaluebool) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 返回给定JavaScript Boolean的C布尔基础类型等价值。  |
109| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueDouble](_j_s_v_m.md#oh_jsvm_getvaluedouble) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, double \*result) | 返回给定JavaScript number的C双精度基础类型等价值。  |
110| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBigintInt64](_j_s_v_m.md#oh_jsvm_getvaluebigintint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int64_t \*result, bool \*lossless) | 返回给定JavaScript BigInt的C int64_t基础类型等价值。 如果需要,它将截断该值,将lossless设置为false。  |
111| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBigintUint64](_j_s_v_m.md#oh_jsvm_getvaluebigintuint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint64_t \*result, bool \*lossless) | 返回给定JavaScript BigInt的C uint64_t基础类型等价值。 如果需要,它将截断该值,将lossless设置为false。  |
112| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBigintWords](_j_s_v_m.md#oh_jsvm_getvaluebigintwords) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int \*signBit, size_t \*wordCount, uint64_t \*words) | 将单个BigInt值转换为符号位、64位小端数组和数组中的元素数。 signBit和words参数可以都设置为NULL。这种情况下,只获取wordCount。  |
113| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueExternal](_j_s_v_m.md#oh_jsvm_getvalueexternal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, void \*\*result) | 检索之前传递给OH_JSVM_CreateExternal()的外部数据指针。  |
114| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueInt32](_j_s_v_m.md#oh_jsvm_getvalueint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int32_t \*result) | 返回给定JavaScript number的C int32基础类型等价值。  |
115| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueInt64](_j_s_v_m.md#oh_jsvm_getvalueint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int64_t \*result) | 返回给定JavaScript number的C int64基础类型等价值。  |
116| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueStringLatin1](_j_s_v_m.md#oh_jsvm_getvaluestringlatin1) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, char \*buf, size_t bufsize, size_t \*result) | 返回对应于传入值的ISO-8859-1编码字符串  |
117| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueStringUtf8](_j_s_v_m.md#oh_jsvm_getvaluestringutf8) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, char \*buf, size_t bufsize, size_t \*result) | 返回对应于传入值的UTF8编码字符串。  |
118| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueStringUtf16](_j_s_v_m.md#oh_jsvm_getvaluestringutf16) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, char16_t \*buf, size_t bufsize, size_t \*result) | 基于传入的值,查询对应的采用UTF16编码的字符串。  |
119| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueUint32](_j_s_v_m.md#oh_jsvm_getvalueuint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint32_t \*result) | 返回给定JavaScript number的C uint_32基础类型等价值。  |
120| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetBoolean](_j_s_v_m.md#oh_jsvm_getboolean) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, bool value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回用于表示给定布尔值的JavaScript单例对象。  |
121| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetGlobal](_j_s_v_m.md#oh_jsvm_getglobal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回global对象。  |
122| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetNull](_j_s_v_m.md#oh_jsvm_getnull) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回null对象。  |
123| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetUndefined](_j_s_v_m.md#oh_jsvm_getundefined) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回Undefined对象。  |
124| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToBool](_j_s_v_m.md#oh_jsvm_coercetobool) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 实现抽象操作ToBoolean()。  |
125| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToNumber](_j_s_v_m.md#oh_jsvm_coercetonumber) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 实现抽象操作ToNumber()。 如果传入的值是对象,则函数可能会运行JavaScript代码。  |
126| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToObject](_j_s_v_m.md#oh_jsvm_coercetoobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 实现抽象操作ToObject()。  |
127| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToString](_j_s_v_m.md#oh_jsvm_coercetostring) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 实现抽象操作ToString()。 如果传入的值是对象,则函数可能会运行JavaScript代码。  |
128| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Typeof](_j_s_v_m.md#oh_jsvm_typeof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_ValueType](_j_s_v_m.md#jsvm_valuetype) \*result) | 提供类似于在定义的对象上调用typeof运算符的行为。 不同点在于,该函数支持检测外部值;它将null检测为单独的类型, 而ECMAScript typeof将用于检测object。如果value的类型无效,则返回错误。  |
129| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Instanceof](_j_s_v_m.md#oh_jsvm_instanceof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) constructor, bool \*result) | 提供类似于在对象上调用instanceof运算符的行为。  |
130| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsArray](_j_s_v_m.md#oh_jsvm_isarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 提供类似于在对象上调用IsArray的行为。  |
131| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsArraybuffer](_j_s_v_m.md#oh_jsvm_isarraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 检查传入的对象是否为ArrayBuffer。  |
132| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsDate](_j_s_v_m.md#oh_jsvm_isdate) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isDate) | 检查传入的Object是否为日期。  |
133| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsTypedarray](_j_s_v_m.md#oh_jsvm_istypedarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 检查传入的Object是否为类型化数组。  |
134| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsDataview](_j_s_v_m.md#oh_jsvm_isdataview) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 检查传入的对象是否是DataView。  |
135| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_StrictEquals](_j_s_v_m.md#oh_jsvm_strictequals) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) lhs, [JSVM_Value](_j_s_v_m.md#jsvm_value) rhs, bool \*result) | 提供类似调用严格相等算法的行为。  |
136| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Equals](_j_s_v_m.md#oh_jsvm_equals) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) lhs, [JSVM_Value](_j_s_v_m.md#jsvm_value) rhs, bool \*result) | 提供类似调用宽松相等算法的行为。 无论JavaScript值类型如何,只要值相等,就返回true。  |
137| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DetachArraybuffer](_j_s_v_m.md#oh_jsvm_detacharraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer) | 提供类似于调用ArrayBuffer detach操作的行为。  |
138| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsDetachedArraybuffer](_j_s_v_m.md#oh_jsvm_isdetachedarraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 提供类似调用ArrayBuffer IsDetachedBuffer操作的行为。  |
139| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetPropertyNames](_j_s_v_m.md#oh_jsvm_getpropertynames) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 以字符数数组的形式返回object的可枚举属性的名称。 key为符号的object的属性将不会被包含在内。  |
140| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetAllPropertyNames](_j_s_v_m.md#oh_jsvm_getallpropertynames) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_KeyCollectionMode](_j_s_v_m.md#jsvm_keycollectionmode) keyMode, [JSVM_KeyFilter](_j_s_v_m.md#jsvm_keyfilter) keyFilter, [JSVM_KeyConversion](_j_s_v_m.md#jsvm_keyconversion) keyConversion, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回一个数组,其中包含此对象的可用属性的名称。  |
141| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetProperty](_j_s_v_m.md#oh_jsvm_setproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, [JSVM_Value](_j_s_v_m.md#jsvm_value) value) | 为传入的object设置一个属性。  |
142| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetProperty](_j_s_v_m.md#oh_jsvm_getproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 从传入的object中获取请求的属性。  |
143| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasProperty](_j_s_v_m.md#oh_jsvm_hasproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, bool \*result) | 检查传入的Object是否具有指定命名的属性。  |
144| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DeleteProperty](_j_s_v_m.md#oh_jsvm_deleteproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, bool \*result) | 尝试从object中删除key自己的属性。  |
145| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasOwnProperty](_j_s_v_m.md#oh_jsvm_hasownproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, bool \*result) | 检查传入的Object是否具有命名的自己的属性。key必须是string或symbol, 否则将抛出错误。JSVM-API不会执行任何数据类型之间的转换。  |
146| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetNamedProperty](_j_s_v_m.md#oh_jsvm_setnamedproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, const char \*utf8name, [JSVM_Value](_j_s_v_m.md#jsvm_value) value) | 此方法等效于调用OH_JSVM_SetProperty, 其中,通过utf8Name传入的字符串用于创建JSVM_Value。  |
147| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetNamedProperty](_j_s_v_m.md#oh_jsvm_getnamedproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, const char \*utf8name, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 此方法等效于调用OH_JSVM_GetProperty, 其中,通过utf8Name传入的字符串用于创建JSVM_Value。  |
148| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasNamedProperty](_j_s_v_m.md#oh_jsvm_hasnamedproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, const char \*utf8name, bool \*result) | 此方法等效于使用从作为utf8Name传入的字符串创建的JSVM_Value 调用OH_JSVM_HasProperty。  |
149| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetElement](_j_s_v_m.md#oh_jsvm_setelement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, [JSVM_Value](_j_s_v_m.md#jsvm_value) value) | 在传入的Object上设置一个元素。  |
150| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetElement](_j_s_v_m.md#oh_jsvm_getelement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 获取请求索引处的元素。  |
151| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasElement](_j_s_v_m.md#oh_jsvm_haselement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, bool \*result) | 如果传入的Object在指定的索引处有一个元素,则此JSVM-API返回true。  |
152| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DeleteElement](_j_s_v_m.md#oh_jsvm_deleteelement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, bool \*result) | 尝试从object中删除指定index处的元素。  |
153| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DefineProperties](_j_s_v_m.md#oh_jsvm_defineproperties) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties) | 通过此方法可以在给定对象上高效定义多个属性, 这些属性使用属性描述符进行定义。通过一个属性描述符的数组, 此API将为对象依次设置数组中的属性。  |
154| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectFreeze](_j_s_v_m.md#oh_jsvm_objectfreeze) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object) | 冻结指定的对象。这样可以防止为其添加新的属性、删除现有属性、更改现有属性的 可枚举性、可配置性或可写性、或者更改现有属性的值。它还可以防止改变对象的原型。  |
155| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectSeal](_j_s_v_m.md#oh_jsvm_objectseal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object) | 封装指定的对象。这样可以防止为其添加新的属性并且将所有现有属性标记为不可配置。  |
156| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CallFunction](_j_s_v_m.md#oh_jsvm_callfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) recv, [JSVM_Value](_j_s_v_m.md#jsvm_value) func, size_t argc, const [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 支持从native代码调用JavaScript函数对象, 这是从native代码回调到JavaScript的主要机制。  |
157| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateFunction](_j_s_v_m.md#oh_jsvm_createfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8name, size_t length, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) cb, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 支持在native代码中创建函数对象,这是从JavaScript调用native代码的主要机制。 在此调用之后,新创建的函数在脚本中不再自动可见。相反,必须在JavaScript可见的任何对象上显示设置属性, 才能从脚本访问该函数。  |
158| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetCbInfo](_j_s_v_m.md#oh_jsvm_getcbinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_CallbackInfo](_j_s_v_m.md#jsvm_callbackinfo) cbinfo, size_t \*argc, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*thisArg, void \*\*data) | 此方法在回调函数中用于检索有关调用的详细信息, 例如来自给定回调信息的参数和this指针。  |
159| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetNewTarget](_j_s_v_m.md#oh_jsvm_getnewtarget) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_CallbackInfo](_j_s_v_m.md#jsvm_callbackinfo) cbinfo, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 返回构造函数调用的new target。 如果当前回调不是构造函数调用,结果为NULL。  |
160| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_NewInstance](_j_s_v_m.md#oh_jsvm_newinstance) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) constructor, size_t argc, const [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 使用给定的JSVM_Value表示的构造函数来实例化新的JavaScript值。  |
161| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DefineClass](_j_s_v_m.md#oh_jsvm_defineclass) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8name, size_t length, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) constructor, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 定义一个JavaScript类。  |
162| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Wrap](_j_s_v_m.md#oh_jsvm_wrap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*nativeObject, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) \*result) | 在JavaScript对象中封装native实例。native实例 后续可以通过OH_JSVM_Unwrap()进行检索。  |
163| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Unwrap](_j_s_v_m.md#oh_jsvm_unwrap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*\*result) | 当JavaScript代码调用类的方法或属性访问器时,对应的JSVM_Callback将被调用。 如果回调是针对实例方法或访问器的,则回调的this参数是封装器对象;然后可以通过调用 封装器对象的OH_JSVM_Unwrap()获得作为调用目标的C++实例。  |
164| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RemoveWrap](_j_s_v_m.md#oh_jsvm_removewrap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*\*result) | 使用OH_JSVM_Wrap()检索先前封装在JavaScript对象js_object中的native实例并移除封装。 如果finalize回调与封装相关联,则当JavaScript对象被垃圾回收时将不再调用它。  |
165| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_TypeTagObject](_j_s_v_m.md#oh_jsvm_typetagobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, const [JSVM_TypeTag](_j_s_v_m___type_tag.md) \*typeTag) | 将typeTag指针的值与JavaScript对象或外部值相关联。可调用OH_JSVM_CheckObjectTypeTag() 判断附加在对象上的标记类型,以确保对象的类型正确。如果对象已经有关联的类型标记,则返回JSVM_INVALID_ARG。  |
166| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CheckObjectTypeTag](_j_s_v_m.md#oh_jsvm_checkobjecttypetag) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, const [JSVM_TypeTag](_j_s_v_m___type_tag.md) \*typeTag, bool \*result) | 将类型标签typeTag与JavaScript对象或外部值上的标签作对比。如果找到相同标签, 设置result为true,否则为false。  |
167| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_AddFinalizer](_j_s_v_m.md#oh_jsvm_addfinalizer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*finalizeData, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) \*result) | 为JavaScript对象添加JSVM_Finalize回调,当JavaScript对象被垃圾回收时调用该回调函数。 可以在单个JavaScript对象上多次调用OH_JSVM_AddFinalizer。  |
168| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetVersion](_j_s_v_m.md#oh_jsvm_getversion) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, uint32_t \*result) | 返回JSVM运行时支持的最高JSVM-API版本。 后续将新增JSVM-API,以便支持更多的功能。引入该API的目的:在支持某功能的JSVM版本, 可以使用新的功能;在不支持某功能的JSVM版本,可以提供回调行为。  |
169| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetVMInfo](_j_s_v_m.md#oh_jsvm_getvminfo) ([JSVM_VMInfo](_j_s_v_m___v_m_info.md) \*result) | 返回虚拟机的信息。  |
170| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_AdjustExternalMemory](_j_s_v_m.md#oh_jsvm_adjustexternalmemory) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int64_t changeInBytes, int64_t \*result) | 此函数将因JavaScript对象而保持活跃的外部分配的内存大小通知给底层虚拟机。 注册外部分配的内存将比其他方式更频繁地触发全局垃圾回收。  |
171| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_MemoryPressureNotification](_j_s_v_m.md#oh_jsvm_memorypressurenotification) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_MemoryPressureLevel](_j_s_v_m.md#jsvm_memorypressurelevel) level) | 通知虚拟机系统内存不足并有选择地触发垃圾回收。  |
172| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreatePromise](_j_s_v_m.md#oh_jsvm_createpromise) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Deferred](_j_s_v_m.md#jsvm_deferred) \*deferred, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*promise) | 创建一个延迟对象和一个JavaScript promise。  |
173| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ResolveDeferred](_j_s_v_m.md#oh_jsvm_resolvedeferred) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Deferred](_j_s_v_m.md#jsvm_deferred) deferred, [JSVM_Value](_j_s_v_m.md#jsvm_value) resolution) | 通过与之关联的延迟对象来解析JavaScript promise。 它只能用于解析对应的可用的延迟对象的JavaScript Promise。 这意味着Promise必须使用OH_JSVM_CreatePromise()创建,并且 从该调用返回的对象必须保留,才能将其传递给此API。  |
174| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RejectDeferred](_j_s_v_m.md#oh_jsvm_rejectdeferred) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Deferred](_j_s_v_m.md#jsvm_deferred) deferred, [JSVM_Value](_j_s_v_m.md#jsvm_value) rejection) | 通过与之关联的延迟对象来拒绝JavaScript Promise。 它只能用于拒绝对应的可用延迟对象的JavaScript Promise。 这意味着Promise必须使用OH_JSVM_CreatePromise()创建,并且 从该调用返回的对象必须保留,才能将其传递给此API。  |
175| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsPromise](_j_s_v_m.md#oh_jsvm_ispromise) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isPromise) | 查询Promise是否为原生Promise对象。  |
176| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_JsonParse](_j_s_v_m.md#oh_jsvm_jsonparse) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsonString, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 解析JSON字符串,并返回成功解析的值。  |
177| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_JsonStringify](_j_s_v_m.md#oh_jsvm_jsonstringify) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsonObject, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 将对象字符串化,并返回成功转换后的字符串。  |
178| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSnapshot](_j_s_v_m.md#oh_jsvm_createsnapshot) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, size_t contextCount, const [JSVM_Env](_j_s_v_m.md#jsvm_env) \*contexts, const char \*\*blobData, size_t \*blobSize) | 创建虚拟机的启动快照。  |
179| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetHeapStatistics](_j_s_v_m.md#oh_jsvm_getheapstatistics) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_HeapStatistics](_j_s_v_m___heap_statistics.md) \*result) | 返回一组虚拟机堆的统计数据。  |
180| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_StartCpuProfiler](_j_s_v_m.md#oh_jsvm_startcpuprofiler) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_CpuProfiler](_j_s_v_m.md#jsvm_cpuprofiler) \*result) | 创建并启动一个CPU profiler。  |
181| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_StopCpuProfiler](_j_s_v_m.md#oh_jsvm_stopcpuprofiler) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_CpuProfiler](_j_s_v_m.md#jsvm_cpuprofiler) profiler, [JSVM_OutputStream](_j_s_v_m.md#jsvm_outputstream) stream, void \*streamData) | 停止CPU profiler并将结果输出到流。  |
182| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_TakeHeapSnapshot](_j_s_v_m.md#oh_jsvm_takeheapsnapshot) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_OutputStream](_j_s_v_m.md#jsvm_outputstream) stream, void \*streamData) | 获取当前堆快照并将其输出到流。  |
183| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenInspector](_j_s_v_m.md#oh_jsvm_openinspector) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*host, uint16_t port) | 在指定的主机和端口上激活inspector,将用来调试JS代码。  |
184| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseInspector](_j_s_v_m.md#oh_jsvm_closeinspector) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env) | 尝试关闭剩余的所有inspector连接。  |
185| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_WaitForDebugger](_j_s_v_m.md#oh_jsvm_waitfordebugger) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, bool breakNextLine) | 等待主机与inspector建立socket连接,连接建立后程序将继续运行。 发送Runtime.runIfWaitingForDebugger命令。  |
186| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DefineClassWithPropertyHandler](_j_s_v_m.md#oh_jsvm_defineclasswithpropertyhandler) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8name, size_t length, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) constructor, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties, [JSVM_PropertyHandlerCfg](_j_s_v_m.md#jsvm_propertyhandlercfg) propertyHandlerCfg, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) callAsFunctionCallback, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 定义一个具有给定类名、构造函数、属性和回调处理程序的JavaScript类属性操作包括getter、setter、deleter、enumerator等,并作为函数回调进行调用。  |
187| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsUndefined](_j_s_v_m.md#oh_jsvm_isundefined) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isUndefined) | 此API检查传入的值是否为Undefined。 这相当于JS中的value === undefined。  |
188| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsNull](_j_s_v_m.md#oh_jsvm_isnull) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isNull) | 此API检查传入的值是否为Null对象。 这相当于JS中的value === null。  |
189| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsNullOrUndefined](_j_s_v_m.md#oh_jsvm_isnullorundefined) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isNullOrUndefined) | 此API检查传入的值是否为Null或Undefined。 这相当于JS中的value == null。  |
190| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsBoolean](_j_s_v_m.md#oh_jsvm_isboolean) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isBoolean) | 此API检查传入的值是否为Boolean。 这相当于JS中的‘typeof value === 'boolean’`。  |
191| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsNumber](_j_s_v_m.md#oh_jsvm_isnumber) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isNumber) | 此API检查传入的值是否为Number。 这相当于JS中的‘typeof value === 'number’`。  |
192| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsString](_j_s_v_m.md#oh_jsvm_isstring) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isString) | 此API检查传入的值是否为String。 这相当于JS中的‘typeof value === 'string’`。  |
193| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsSymbol](_j_s_v_m.md#oh_jsvm_issymbol) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isSymbol) | 此API检查传入的值是否为Symbol。 这相当于JS中的‘typeof value === 'symbol’`。  |
194| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsFunction](_j_s_v_m.md#oh_jsvm_isfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isFunction) | 此API检查传入的值是否为Function。 这相当于JS中的‘typeof value === 'function’`。  |
195| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsObject](_j_s_v_m.md#oh_jsvm_isobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isObject) | 此API检查传入的值是否为Object。  |
196| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsBigInt](_j_s_v_m.md#oh_jsvm_isbigint) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isBigInt) | 此API检查传入的值是否为BigInt。 这相当于JS中的‘typeof value === 'bigint’`。  |
197| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_CreateMap](_j_s_v_m.md#oh_jsvm_createmap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 此API返回与JavaScript Map类型对应的JavaScript值。  |
198| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_IsMap](_j_s_v_m.md#oh_jsvm_ismap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isMap) | 此API检查传入的值是否为Map。  |
199| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_IsConstructor](_j_s_v_m.md#oh_jsvm_isconstructor) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isConstructor) | 此API检查传入的值是否为构造函数。  |
200| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_CreateRegExp](_j_s_v_m.md#oh_jsvm_createregexp) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_RegExpFlags](_j_s_v_m.md#jsvm_regexpflags) flags, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 此API返回与输入对应的正则表达式的JavaScript值。 接口可能会抛出异常。  |
201| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectGetPrototypeOf](_j_s_v_m.md#oh_jsvm_objectgetprototypeof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 获取JavaScript object的原型。  |
202| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectSetPrototypeOf](_j_s_v_m.md#oh_jsvm_objectsetprototypeof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) prototype) | 设置给定的JavaScript object的原型。  |
203| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSet](_j_s_v_m.md#oh_jsvm_createset) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 创建JavaScript Set对象。  |
204| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsSet](_j_s_v_m.md#oh_jsvm_isset) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isSet) | 判断给定的对象是否是Set类型。  |
205| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToBigInt](_j_s_v_m.md#oh_jsvm_coercetobigint) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 实现抽象操作ToBigInt()。  |
206| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsRegExp](_j_s_v_m.md#oh_jsvm_isregexp) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 此API检查传入的值是否为JavaScript RegExp对象。  |
207| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateFunctionWithScript](_j_s_v_m.md#oh_jsvm_createfunctionwithscript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*funcName, size_t length, size_t argc, const [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | 创建一个以给定JavaScript为函数体的函数。  |
208| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_PumpMessageLoop](_j_s_v_m.md#oh_jsvm_pumpmessageloop) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, bool \*result) | 启动虚拟机内任务队列的运行。这个任务队列可以通过外部事件循环来执行。  |
209| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_PerformMicrotaskCheckpoint](_j_s_v_m.md#oh_jsvm_performmicrotaskcheckpoint) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm) | 检查队列中是否有微任务等待,如果存在则执行它们。  |
210| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RetainScript](_j_s_v_m.md#oh_jsvm_retainscript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script) | 持久保存一个JSVM_Script并将其生命周期延长到当前作用域之外.  |
211| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReleaseScript](_j_s_v_m.md#oh_jsvm_releasescript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script) | 此函数释放由OH_JSVM_RetainScript保留的脚本,释放后应避免对传入 script 的再次使用.  |
212| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenInspectorWithName](_j_s_v_m.md#oh_jsvm_openinspectorwithname) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int pid, const char \*name) | 此函数打开一个命名为传入 name 的 inspector,为其打开对应 pid 的 unix domain 端口.  |
213| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileWasmModule](_j_s_v_m.md#oh_jsvm_compilewasmmodule) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const uint8_t \*wasmBytecode, size_t wasmBytecodeLength, const uint8_t \*cacheData, size_t cacheDataLength, bool \*cacheRejected, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*wasmModule) | 将 WebAssembly 字节码编译得到一个 WebAssembly 模块。 如果提供了 WebAssembly 缓存,则会先尝试对缓存进行反序列化。  |
214| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileWasmFunction](_j_s_v_m.md#oh_jsvm_compilewasmfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) wasmModule, uint32_t functionIndex, [JSVM_WasmOptLevel](_j_s_v_m.md#jsvm_wasmoptlevel) optLevel) | 对当前 WebAssembly 模块中指定索引的函数进行指定优化等级的编译优化。  |
215| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsWasmModuleObject](_j_s_v_m.md#oh_jsvm_iswasmmoduleobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | 判断给定的 JSVM_Value 是否是一个 WebAssembly 模块。  |
216| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateWasmCache](_j_s_v_m.md#oh_jsvm_createwasmcache) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) wasmModule, const uint8_t \*\*data, size_t \*length) | 为给定的 WebAssembly 模块生成缓存。  |
217| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReleaseCache](_j_s_v_m.md#oh_jsvm_releasecache) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const uint8_t \*cacheData, [JSVM_CacheType](_j_s_v_m.md#jsvm_cachetype) cacheType) | 释放给定类型的缓存数据。  |
218