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