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