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