1# jsvm.h
2
3
4## Overview
5
6Provides JSVM-API API definitions.
7
8The APIs are used to provide independent, standard, and complete JavaScript engine capabilities, including managing the engine lifecycle, compiling and running JS code, implementing JS/C++ cross-language invoking, and taking snapshots.
9
10**Library**: libjsvm.so
11
12**System capability**: SystemCapability.ArkCompiler.JSVM
13
14**Since**: 11
15
16**Related module**: [JSVM](_j_s_v_m.md)
17
18
19## Summary
20
21
22### Macros
23
24| Name| Description|
25| -------- | -------- |
26| **JSVM_VERSION_EXPERIMENTAL**   2147483647 |  |
27| **JSVM_VERSION**   8 |  |
28| **JSVM_EXTERN**   __attribute__((visibility("default"))) |  |
29| [JSVM_AUTO_LENGTH](_j_s_v_m.md#jsvm_auto_length)   SIZE_MAX | Automatic length. |
30| **EXTERN_C_START** |  |
31| **EXTERN_C_END** |  |
32
33
34### Functions
35
36| Name| Description|
37| -------- | -------- |
38| EXTERN_C_START JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Init](_j_s_v_m.md#oh_jsvm_init) (const [JSVM_InitOptions](_j_s_v_m___init_options.md) \*options) | Initializes a JavaScript VM. |
39| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateVM](_j_s_v_m.md#oh_jsvm_createvm) (const [JSVM_CreateVMOptions](_j_s_v_m___create_v_m_options.md) \*options, [JSVM_VM](_j_s_v_m.md#jsvm_vm) \*result) | Creates a VM instance. |
40| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DestroyVM](_j_s_v_m.md#oh_jsvm_destroyvm) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm) | Destroys a VM instance. |
41| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenVMScope](_j_s_v_m.md#oh_jsvm_openvmscope) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_VMScope](_j_s_v_m.md#jsvm_vmscope) \*result) | Opens a new VM scope for a VM instance. |
42| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseVMScope](_j_s_v_m.md#oh_jsvm_closevmscope) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_VMScope](_j_s_v_m.md#jsvm_vmscope) scope) | Closes the VM scope of a VM instance. |
43| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateEnv](_j_s_v_m.md#oh_jsvm_createenv) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties, [JSVM_Env](_j_s_v_m.md#jsvm_env) \*result) | Creates a new environment based on the optional properties of the new context. |
44| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateEnvFromSnapshot](_j_s_v_m.md#oh_jsvm_createenvfromsnapshot) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, size_t index, [JSVM_Env](_j_s_v_m.md#jsvm_env) \*result) | Creates a new environment based on the startup snapshot of the VM. |
45| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DestroyEnv](_j_s_v_m.md#oh_jsvm_destroyenv) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env) | Destroys the environment. |
46| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenEnvScope](_j_s_v_m.md#oh_jsvm_openenvscope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EnvScope](_j_s_v_m.md#jsvm_envscope) \*result) | Opens a new environment scope. |
47| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseEnvScope](_j_s_v_m.md#oh_jsvm_closeenvscope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EnvScope](_j_s_v_m.md#jsvm_envscope) scope) | Closes an environment scope. |
48| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetVM](_j_s_v_m.md#oh_jsvm_getvm) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_VM](_j_s_v_m.md#jsvm_vm) \*result) | Gets a VM instance. |
49| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileScript](_j_s_v_m.md#oh_jsvm_compilescript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, const uint8_t \*cachedData, size_t cacheDataLength, bool eagerCompile, bool \*cacheRejected, [JSVM_Script](_j_s_v_m.md#jsvm_script) \*result) | Compiles a string of JavaScript code and returns the compiled script. |
50| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileScriptWithOrigin](_j_s_v_m.md#oh_jsvm_compilescriptwithorigin) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, const uint8_t \*cachedData, size_t cacheDataLength, bool eagerCompile, bool \*cacheRejected, [JSVM_ScriptOrigin](_j_s_v_m___script_origin.md) \*origin, [JSVM_Script](_j_s_v_m.md#jsvm_script) \*result) | Compiles a string of JavaScript code that contains source map information and returns the compiled script. |
51| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileScriptWithOptions](_j_s_v_m.md#oh_jsvm_compilescriptwithoptions) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, size_t optionCount, JSVM_CompileOptions options[], [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Compiles a string of JavaScript code and returns the compiled script. |
52| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateCodeCache](_j_s_v_m.md#oh_jsvm_createcodecache) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script, const uint8_t \*\*data, size_t \*length) | Creates a code cache for the compiled script. |
53| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RunScript](_j_s_v_m.md#oh_jsvm_runscript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Runs a string of JavaScript code and returns its result, including the following precautions: Unlike eval, this function does not allow the script to access the current lexical scope, and therefore does not allow the script to access the module scope. This means that pseudo-global variables such as **require** will be unavailable. The script can access the global scope. The functions and variable declarations in the script will be added to the global object. Variable declarations using **let** and **const** are globally visible, but are not added to the global object. The value of **this** is **global** in the script. |
54| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetInstanceData](_j_s_v_m.md#oh_jsvm_setinstancedata) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*data, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint) | Sets instance data so that it is associated with the currently running JSVM environment. You can use **OH_JSVM_GetInstanceData()** to get data later. Any existing data set by a previous call to **OH_JSVM_SetInstanceData()** will be overwritten. If **finalizeCb** was previously provided, it will not be called. |
55| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetInstanceData](_j_s_v_m.md#oh_jsvm_getinstancedata) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*\*data) | Gets instance data that has been set by **OH_JSVM_SetInstanceData()**. If no associated data is set, this function is called successfully and **data** is set to **NULL**. |
56| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetLastErrorInfo](_j_s_v_m.md#oh_jsvm_getlasterrorinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const [JSVM_ExtendedErrorInfo](_j_s_v_m___extended_error_info.md) \*\*result) | Gets the **JSVM_ExtendedErrorInfo** struct that contains information about the last error that occurred. The content of **JSVM_ExtendedErrorInfo** returned is valid only before the JSVM-API function is called for the same environment. This includes a call to **OH_JSVM_IsExceptionPending**, so you may often need to copy information for later use. The pointer returned in error_message points to a statically defined string, so if you copy it from the error_message field (which will be overwritten) before calling another JSVM-API function, you can safely use the pointer. |
57| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Throw](_j_s_v_m.md#oh_jsvm_throw) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) error) | Throws the provided JavaScript value. |
58| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowError](_j_s_v_m.md#oh_jsvm_throwerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | Throws a JavaScript Error with the provided text. |
59| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowTypeError](_j_s_v_m.md#oh_jsvm_throwtypeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | Throws a JavaScript TypeError with the provided text. |
60| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowRangeError](_j_s_v_m.md#oh_jsvm_throwrangeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | Throws a JavaScript RangeError with the provided text. |
61| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ThrowSyntaxError](_j_s_v_m.md#oh_jsvm_throwsyntaxerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*code, const char \*msg) | Throws a JavaScript SyntaxError with the provided text. |
62| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsError](_j_s_v_m.md#oh_jsvm_iserror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Checks whether the given JSVM_Value indicates an error. |
63| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateError](_j_s_v_m.md#oh_jsvm_createerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript Error with the provided text. |
64| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateTypeError](_j_s_v_m.md#oh_jsvm_createtypeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript TypeError with the provided text. |
65| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateRangeError](_j_s_v_m.md#oh_jsvm_createrangeerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript RangeError with the provided text. |
66| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSyntaxError](_j_s_v_m.md#oh_jsvm_createsyntaxerror) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) code, [JSVM_Value](_j_s_v_m.md#jsvm_value) msg, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript SyntaxError with the provided text. |
67| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetAndClearLastException](_j_s_v_m.md#oh_jsvm_getandclearlastexception) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets and clears the last exception. If pending occurs, a JavaScript exception is returned. Otherwise, **NULL** is returned. |
68| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsExceptionPending](_j_s_v_m.md#oh_jsvm_isexceptionpending) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, bool \*result) | Checks whether the last exception is caused by pending. If yes, **true** is returned. Otherwise, **false** is returned. |
69| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenHandleScope](_j_s_v_m.md#oh_jsvm_openhandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_HandleScope](_j_s_v_m.md#jsvm_handlescope) \*result) | Opens a new scope. |
70| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseHandleScope](_j_s_v_m.md#oh_jsvm_closehandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_HandleScope](_j_s_v_m.md#jsvm_handlescope) scope) | Closes the scope. Scopes must be closed in the reverse order of opening scopes. |
71| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenEscapableHandleScope](_j_s_v_m.md#oh_jsvm_openescapablehandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EscapableHandleScope](_j_s_v_m.md#jsvm_escapablehandlescope) \*result) | Opens a new scope from which an object can be escalated to an external scope. |
72| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseEscapableHandleScope](_j_s_v_m.md#oh_jsvm_closeescapablehandlescope) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EscapableHandleScope](_j_s_v_m.md#jsvm_escapablehandlescope) scope) | Closes the scope. Scopes must be closed in the reverse order of opening scopes. This JSVM_API can be called even if there is a suspended JavaScript exception. |
73| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_EscapeHandle](_j_s_v_m.md#oh_jsvm_escapehandle) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_EscapableHandleScope](_j_s_v_m.md#jsvm_escapablehandlescope) scope, [JSVM_Value](_j_s_v_m.md#jsvm_value) escapee, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Escalates the handle to a JavaScript object so that it is valid through the lifecycle of the external scope. Each scope can be called only once. If it is called for multiple times, an error is returned. |
74| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateReference](_j_s_v_m.md#oh_jsvm_createreference) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint32_t initialRefcount, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) \*result) | Creates a new reference with the specified reference count for the passed-in value. |
75| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DeleteReference](_j_s_v_m.md#oh_jsvm_deletereference) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref) | Deletes the passed-in reference. |
76| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReferenceRef](_j_s_v_m.md#oh_jsvm_referenceref) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref, uint32_t \*result) | Increases the reference count and returns the new reference count. |
77| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReferenceUnref](_j_s_v_m.md#oh_jsvm_referenceunref) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref, uint32_t \*result) | Decreases the reference count and returns the new reference count. |
78| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetReferenceValue](_j_s_v_m.md#oh_jsvm_getreferencevalue) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) ref, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the JSVM_Value returned by the JSVM-API , indicating the JavaScript value associated with JSVM_Ref. Otherwise, the result is **NULL**. |
79| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateArray](_j_s_v_m.md#oh_jsvm_createarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Returns the JSVM-API value corresponding to the JavaScript Array type. |
80| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateArrayWithLength](_j_s_v_m.md#oh_jsvm_createarraywithlength) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Returns the JSVM-API value corresponding to the JavaScript Array type. The length attribute of the array is set to the passed-in length parameter. However, there is no guarantee that the underlying buffer is pre-allocated by the VM when the array is created. This behavior is left to the underlying VM implementation. |
81| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateArraybuffer](_j_s_v_m.md#oh_jsvm_createarraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, size_t byteLength, void \*\*data, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Returns the JSVM-API value corresponding to the JavaScript ArrayBuffer type. ArrayBuffer is used to represent a fixed-length binary data buffer. It is usually used as the backup buffer of the TypedArray object. The allocated ArrayBuffer has an underlying byte buffer whose size is determined by the **length** argument. The underlying buffer can be returned to and operated by the caller. This buffer can only be written directly from the native code. To write data from JavaScript to this buffer, you need to create a TypedArray or DataView object. |
82| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_AllocateArrayBufferBackingStoreData](_j_s_v_m.md#oh_jsvm_allocatearraybufferbackingstoredata) (size_t byteLength, [JSVM_InitializedFlag](_j_s_v_m.md#jsvm_initializedflag) initialized, void \*\*data) | Allocates the BackingStore memory for the array buffer. |
83| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_FreeArrayBufferBackingStoreData](_j_s_v_m.md#oh_jsvm_freearraybufferbackingstoredata) (void \*data) | Frees the BackingStore memory allocated by **OH_JSVM_AllocateArrayBufferBackingStoreData**. |
84| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_CreateArrayBufferFromBackingStoreData](_j_s_v_m.md#oh_jsvm_createarraybufferfrombackingstoredata) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*data, size_t backingStoreSize, size_t offset, size_t arrayBufferSize, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates an array buffer on the allocated BackingStore memory. |
85| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateDate](_j_s_v_m.md#oh_jsvm_createdate) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, double time, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Allocates a JavaScript Date object. This API does not process leap seconds. This is because ECMAScript complies with the POSIX time specifications and ignores leap seconds. |
86| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateExternal](_j_s_v_m.md#oh_jsvm_createexternal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, void \*data, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Allocates a JavaScript value with external data. This is used to pass external data through JavaScript code. You can use **OH_JSVM_GetValueExternal** to retrieve the value from the native code. This API adds a **JSVM_Finalize** callback, which is called when the newly created JavaScript object is garbage collected. The created value is not an object, so it does not support additional attributes. It is considered as a unique value type: Calling **OH_JSVM_Typeof()** with an external value generates **JSVM_EXTERNAL**. |
87| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateObject](_j_s_v_m.md#oh_jsvm_createobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Allocates a default JavaScript object. This function is equivalent to executing **new Object()** in JavaScript. |
88| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSymbol](_j_s_v_m.md#oh_jsvm_createsymbol) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) description, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript symbol value from a UTF8-encoded C string. |
89| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SymbolFor](_j_s_v_m.md#oh_jsvm_symbolfor) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8description, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Searches the global registry for an existing symbol with the given description. If the symbol already exists, it is returned. Otherwise, a new symbol is created in the registry. |
90| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateTypedarray](_j_s_v_m.md#oh_jsvm_createtypedarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_TypedarrayType](_j_s_v_m.md#jsvm_typedarraytype) type, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer, size_t byteOffset, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript TypedArray object based on an existing ArrayBuffer object. The TypedArray object provides an array-like view on the underlying data buffer, where each element has the same underlying binary scalar data type. The requirement is as follows: (length\* Element size) + byteOffset ≤ Size of the passed-in array (in bytes). Otherwise, a RangeError is thrown. |
91| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateDataview](_j_s_v_m.md#oh_jsvm_createdataview) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer, size_t byteOffset, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript DataView object based on an existing ArrayBuffer object. The DataView object provides an array-like view on the underlying data buffer, where elements can have different sizes and types. The requirement is as follows: length in binary + byteOffset ≤ Size of the passed-in array (in bytes). Otherwise, a RangeError is thrown. |
92| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateInt32](_j_s_v_m.md#oh_jsvm_createint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int32_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript number object from a C int32_t object. |
93| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateUint32](_j_s_v_m.md#oh_jsvm_createuint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, uint32_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript number object from a C uint32_t object. |
94| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateInt64](_j_s_v_m.md#oh_jsvm_createint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int64_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript number object from a C int64_t object. |
95| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateDouble](_j_s_v_m.md#oh_jsvm_createdouble) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, double value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript number object from a C double object. |
96| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateBigintInt64](_j_s_v_m.md#oh_jsvm_createbigintint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int64_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript BigInt object from a C int64_t object. |
97| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateBigintUint64](_j_s_v_m.md#oh_jsvm_createbigintuint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, uint64_t value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript BigInt object from a C uint64_t object. |
98| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateBigintWords](_j_s_v_m.md#oh_jsvm_createbigintwords) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int signBit, size_t wordCount, const uint64_t \*words, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript BigInt value from a group of C uint64_t words. |
99| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateStringLatin1](_j_s_v_m.md#oh_jsvm_createstringlatin1) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*str, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript string from a C string encoded using ISO-8859-1. Copies a native string. |
100| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateStringUtf16](_j_s_v_m.md#oh_jsvm_createstringutf16) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char16_t \*str, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript string from a C string encoded using UTF16-LE. Copies a native string. |
101| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateStringUtf8](_j_s_v_m.md#oh_jsvm_createstringutf8) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*str, size_t length, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript string from a C string encoded using UTF8. Copies a native string. |
102| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetArrayLength](_j_s_v_m.md#oh_jsvm_getarraylength) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint32_t \*result) | Gets the length of an array. |
103| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetArraybufferInfo](_j_s_v_m.md#oh_jsvm_getarraybufferinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer, void \*\*data, size_t \*byteLength) | Gets the underlying data buffer of the ArrayBuffer and its length. |
104| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetPrototype](_j_s_v_m.md#oh_jsvm_getprototype) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the prototype of an object. |
105| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetTypedarrayInfo](_j_s_v_m.md#oh_jsvm_gettypedarrayinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) typedarray, [JSVM_TypedarrayType](_j_s_v_m.md#jsvm_typedarraytype) \*type, size_t \*length, void \*\*data, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*arraybuffer, size_t \*byteOffset) | Gets the properties of a typed array. If any property is not required, its output parameter can be **NULL**. |
106| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetDataviewInfo](_j_s_v_m.md#oh_jsvm_getdataviewinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) dataview, size_t \*bytelength, void \*\*data, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*arraybuffer, size_t \*byteOffset) | Gets the proprieties of a DataView. If any property is not required, its output parameter can be set to **NULL**. |
107| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetDateValue](_j_s_v_m.md#oh_jsvm_getdatevalue) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, double \*result) | Gets the C double-precision primitive equivalent of a given JavaScript date. If this API is successfully called, **JSVM_OK** is returned. If a JSVM_Value of a non-JavaScript date type is passed in, **JSVM_DATA_EXPECTED** is returned. |
108| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBool](_j_s_v_m.md#oh_jsvm_getvaluebool) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Gets the C Boolean primitive equivalent of a given JavaScript Boolean. |
109| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueDouble](_j_s_v_m.md#oh_jsvm_getvaluedouble) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, double \*result) | Gets the C double-precision primitive equivalent of a given JavaScript number. |
110| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBigintInt64](_j_s_v_m.md#oh_jsvm_getvaluebigintint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int64_t \*result, bool \*lossless) | Gets the C int64_t primitive equivalent of a given JavaScript BigInt. If necessary, it truncates the value and sets **lossless** to **false**. |
111| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBigintUint64](_j_s_v_m.md#oh_jsvm_getvaluebigintuint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint64_t \*result, bool \*lossless) | Gets the C uint64_t primitive equivalent of a given JavaScript BigInt. If necessary, it truncates the value and sets **lossless** to **false**. |
112| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueBigintWords](_j_s_v_m.md#oh_jsvm_getvaluebigintwords) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int \*signBit, size_t \*wordCount, uint64_t \*words) | Gets the sign bit, 64-bit little-endian array, and number of elements in the array from a BigInt value. Both **signBit** and **words** can be set to **NULL**. In this case, only **wordCount** is obtained. |
113| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueExternal](_j_s_v_m.md#oh_jsvm_getvalueexternal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, void \*\*result) | Gets the external data pointer previously passed to **OH_JSVM_CreateExternal()**. |
114| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueInt32](_j_s_v_m.md#oh_jsvm_getvalueint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int32_t \*result) | Gets the C int32 primitive equivalent of a given JavaScript number. |
115| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueInt64](_j_s_v_m.md#oh_jsvm_getvalueint64) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, int64_t \*result) | Gets the C int64 primitive equivalent of a given JavaScript number. |
116| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueStringLatin1](_j_s_v_m.md#oh_jsvm_getvaluestringlatin1) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, char \*buf, size_t bufsize, size_t \*result) | Gets an ISO-8859-1 encoded string corresponding to the passed-in value. |
117| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueStringUtf8](_j_s_v_m.md#oh_jsvm_getvaluestringutf8) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, char \*buf, size_t bufsize, size_t \*result) | Gets a UTF8-encoded string corresponding to the passed-in value. |
118| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueStringUtf16](_j_s_v_m.md#oh_jsvm_getvaluestringutf16) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, char16_t \*buf, size_t bufsize, size_t \*result) | Gets a UTF16-encoded string based on the passed-in value. |
119| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetValueUint32](_j_s_v_m.md#oh_jsvm_getvalueuint32) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, uint32_t \*result) | Gets a C uint_32 primitive equivalent of a given JavaScript number. |
120| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetBoolean](_j_s_v_m.md#oh_jsvm_getboolean) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, bool value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets a JavaScript singleton object that is used to represent the given Boolean value. |
121| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetGlobal](_j_s_v_m.md#oh_jsvm_getglobal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the global object. |
122| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetNull](_j_s_v_m.md#oh_jsvm_getnull) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the null object. |
123| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetUndefined](_j_s_v_m.md#oh_jsvm_getundefined) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the undefined object. |
124| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToBool](_j_s_v_m.md#oh_jsvm_coercetobool) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Implements the abstract operation ToBoolean(). |
125| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToNumber](_j_s_v_m.md#oh_jsvm_coercetonumber) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Implements the abstract operation ToNumber(). If the passed-in value is an object, the function may run JavaScript code. |
126| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToObject](_j_s_v_m.md#oh_jsvm_coercetoobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Implements the abstract operation ToObject(). |
127| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToString](_j_s_v_m.md#oh_jsvm_coercetostring) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Implements the abstract operation ToString(). If the passed-in value is an object, the function may run JavaScript code. |
128| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Typeof](_j_s_v_m.md#oh_jsvm_typeof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_ValueType](_j_s_v_m.md#jsvm_valuetype) \*result) | Provides behavior similar to calling the typeof operator on a defined object. The difference is that this function supports the detection of external values; it detects null as a separate type, while ECMAScript typeof is used to detect objects. If the value type is invalid, an error is returned. |
129| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Instanceof](_j_s_v_m.md#oh_jsvm_instanceof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) constructor, bool \*result) | Provides behavior similar to calling the instanceof operator on an object. |
130| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsArray](_j_s_v_m.md#oh_jsvm_isarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Provides behavior similar to calling IsArray on an object. |
131| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsArraybuffer](_j_s_v_m.md#oh_jsvm_isarraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Checks whether the passed-in object is ArrayBuffer. |
132| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsDate](_j_s_v_m.md#oh_jsvm_isdate) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isDate) | Checks whether the passed-in object is a date. |
133| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsTypedarray](_j_s_v_m.md#oh_jsvm_istypedarray) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Checks whether the passed-in object is a typed array. |
134| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsDataview](_j_s_v_m.md#oh_jsvm_isdataview) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Checks whether the passed-in object is a DataView. |
135| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_StrictEquals](_j_s_v_m.md#oh_jsvm_strictequals) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) lhs, [JSVM_Value](_j_s_v_m.md#jsvm_value) rhs, bool \*result) | Provides behavior similar to calling the strict equality algorithm. |
136| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Equals](_j_s_v_m.md#oh_jsvm_equals) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) lhs, [JSVM_Value](_j_s_v_m.md#jsvm_value) rhs, bool \*result) | Provides behavior similar to calling the loose equality algorithm. Regardless of the JavaScript value type, **true** is returned as long as the values are equal. |
137| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DetachArraybuffer](_j_s_v_m.md#oh_jsvm_detacharraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) arraybuffer) | Provides behavior similar to calling the ArrayBuffer detach operation. |
138| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsDetachedArraybuffer](_j_s_v_m.md#oh_jsvm_isdetachedarraybuffer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Provides behavior similar to calling the ArrayBuffer IsDetachedBuffer operation. |
139| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetPropertyNames](_j_s_v_m.md#oh_jsvm_getpropertynames) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the names of enumerable properties of an object as an array of characters. The properties of the object whose key is a symbol are not included. |
140| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetAllPropertyNames](_j_s_v_m.md#oh_jsvm_getallpropertynames) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_KeyCollectionMode](_j_s_v_m.md#jsvm_keycollectionmode) keyMode, [JSVM_KeyFilter](_j_s_v_m.md#jsvm_keyfilter) keyFilter, [JSVM_KeyConversion](_j_s_v_m.md#jsvm_keyconversion) keyConversion, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets an array containing the names of the available properties of this object. |
141| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetProperty](_j_s_v_m.md#oh_jsvm_setproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, [JSVM_Value](_j_s_v_m.md#jsvm_value) value) | Sets a property for the passed-in object. |
142| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetProperty](_j_s_v_m.md#oh_jsvm_getproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the requested property from the passed-in object. |
143| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasProperty](_j_s_v_m.md#oh_jsvm_hasproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, bool \*result) | Checks whether the passed-in object has the property with the specified name. |
144| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DeleteProperty](_j_s_v_m.md#oh_jsvm_deleteproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, bool \*result) | Deletes the property of the key from the object. |
145| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasOwnProperty](_j_s_v_m.md#oh_jsvm_hasownproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) key, bool \*result) | Checks whether the passed-in object has its own property. The key must be a string or symbol. Otherwise, an error is thrown. The JSVM-API does not perform any conversion between data types. |
146| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetNamedProperty](_j_s_v_m.md#oh_jsvm_setnamedproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, const char \*utf8name, [JSVM_Value](_j_s_v_m.md#jsvm_value) value) | This method is equivalent to calling **OH_JSVM_SetProperty**, where the JSVM_Value is created using the character string passed through **utf8Name**. |
147| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetNamedProperty](_j_s_v_m.md#oh_jsvm_getnamedproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, const char \*utf8name, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | This method is equivalent to calling **OH_JSVM_GetProperty**, where the JSVM_Value is created using the character string passed through **utf8Name**. |
148| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasNamedProperty](_j_s_v_m.md#oh_jsvm_hasnamedproperty) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, const char \*utf8name, bool \*result) | This method is equivalent to calling **OH_JSVM_HasProperty**, where the JSVM_Value is created using the character string passed through **utf8Name**. |
149| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_SetElement](_j_s_v_m.md#oh_jsvm_setelement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, [JSVM_Value](_j_s_v_m.md#jsvm_value) value) | Sets an element on the passed-in object. |
150| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetElement](_j_s_v_m.md#oh_jsvm_getelement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the element at the requested index. |
151| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_HasElement](_j_s_v_m.md#oh_jsvm_haselement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, bool \*result) | Checks whether an object has an element at the specified index. If yes, the JSVM-API returns **true**. |
152| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DeleteElement](_j_s_v_m.md#oh_jsvm_deleteelement) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, uint32_t index, bool \*result) | Deletes the element at the specified index from an object. |
153| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DefineProperties](_j_s_v_m.md#oh_jsvm_defineproperties) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties) | Defines properties on a given object by using property descriptors. Through an array of property descriptors, this API sets the properties in the array in turn for the object. |
154| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectFreeze](_j_s_v_m.md#oh_jsvm_objectfreeze) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object) | Freezes the given object. This prevents additions or deletions of properties, enumerability, configurability, or writeability change of properties, or value change of properties. It also prevents prototype change of an object. |
155| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectSeal](_j_s_v_m.md#oh_jsvm_objectseal) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object) | Seals a specified object. This prevents additions of properties and marks existing properties non-configurable. |
156| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CallFunction](_j_s_v_m.md#oh_jsvm_callfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) recv, [JSVM_Value](_j_s_v_m.md#jsvm_value) func, size_t argc, const [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Supports calling JavaScript function objects from native code, which is the main mechanism for JavaScript to call back from native code. |
157| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateFunction](_j_s_v_m.md#oh_jsvm_createfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8name, size_t length, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) cb, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Supports creating function objects in native code, which is the main mechanism for JavaScript to call native code. After this call, the newly created function is no longer automatically visible in the script. Instead, the setting property must be displayed on any object visible to JavaScript in order to access the function from the script. |
158| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetCbInfo](_j_s_v_m.md#oh_jsvm_getcbinfo) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_CallbackInfo](_j_s_v_m.md#jsvm_callbackinfo) cbinfo, size_t \*argc, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*thisArg, void \*\*data) | Gets detailed information about the callback, such as the parameter from the given callback information and the **this** pointer. |
159| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetNewTarget](_j_s_v_m.md#oh_jsvm_getnewtarget) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_CallbackInfo](_j_s_v_m.md#jsvm_callbackinfo) cbinfo, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the new target called by the constructor. If the current callback is not a constructor call, the result is **NULL**. |
160| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_NewInstance](_j_s_v_m.md#oh_jsvm_newinstance) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) constructor, size_t argc, const [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Instantiates a new JavaScript value by using the constructor represented by the given JSVM_Value. |
161| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DefineClass](_j_s_v_m.md#oh_jsvm_defineclass) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8name, size_t length, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) constructor, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Defines a JavaScript class. |
162| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Wrap](_j_s_v_m.md#oh_jsvm_wrap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*nativeObject, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) \*result) | Wraps a native instance in the JavaScript object. The native instance can be obtained using **OH_JSVM_Unwrap()**. |
163| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_Unwrap](_j_s_v_m.md#oh_jsvm_unwrap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*\*result) | When the JavaScript code calls a method of a class or property accessor, the corresponding JSVM_Callback is called. If the callback is for an instance method or accessor, the **this** argument of the callback is the wrapper object. Then you can obtain the C++ instance as the call target by calling **OH_JSVM_Unwrap()** of the wrapper object. |
164| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RemoveWrap](_j_s_v_m.md#oh_jsvm_removewrap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*\*result) | Removes the wrap of the native instance, which is previously wrapped in **js_object** by **OH_JSVM_Wrap()**. If the **finalize** callback is associated with wrap, it will not be called when the JavaScript object is garbage collected. |
165| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_TypeTagObject](_j_s_v_m.md#oh_jsvm_typetagobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, const [JSVM_TypeTag](_j_s_v_m___type_tag.md) \*typeTag) | Associates the value of the typeTag pointer with a JavaScript object or an external value. You can call **OH_JSVM_CheckObjectTypeTag()** to check the type of the tag attached to the object, to ensure that the object type is correct. If the object already has an associated type tag, **JSVM_INVALID_ARG** is returned. |
166| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CheckObjectTypeTag](_j_s_v_m.md#oh_jsvm_checkobjecttypetag) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, const [JSVM_TypeTag](_j_s_v_m___type_tag.md) \*typeTag, bool \*result) | Compares the typeTag with the tag on a JavaScript object or external value. If they are the same tag, **result** is set to **true**. Otherwise, **result** is set to **false**. |
167| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_AddFinalizer](_j_s_v_m.md#oh_jsvm_addfinalizer) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsObject, void \*finalizeData, [JSVM_Finalize](_j_s_v_m.md#jsvm_finalize) finalizeCb, void \*finalizeHint, [JSVM_Ref](_j_s_v_m.md#jsvm_ref) \*result) | Adds the **JSVM_Finalize** callback to a JavaScript object. This callback is called when the JavaScript object is garbage collected. **OH_JSVM_AddFinalizer** can be called multiple times on a single JavaScript object. |
168| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetVersion](_j_s_v_m.md#oh_jsvm_getversion) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, uint32_t \*result) | Gets the latest JSVM-API version supported by the JSVM runtime. New JSVM-API APIs will be added to support more functions. With this API, the new functions of a certain JSVM version can be used, or callbacks are provided. |
169| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetVMInfo](_j_s_v_m.md#oh_jsvm_getvminfo) ([JSVM_VMInfo](_j_s_v_m___v_m_info.md) \*result) | Gets the VM information. |
170| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_AdjustExternalMemory](_j_s_v_m.md#oh_jsvm_adjustexternalmemory) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int64_t changeInBytes, int64_t \*result) | Notifies the underlying VM of the size of externally allocated memory that remains active due to the JavaScript object. Registering externally allocated memory triggers global garbage collection more frequently than in other ways. |
171| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_MemoryPressureNotification](_j_s_v_m.md#oh_jsvm_memorypressurenotification) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_MemoryPressureLevel](_j_s_v_m.md#jsvm_memorypressurelevel) level) | Notifies the VM of insufficient system memory and selectively triggers garbage collection. |
172| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreatePromise](_j_s_v_m.md#oh_jsvm_createpromise) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Deferred](_j_s_v_m.md#jsvm_deferred) \*deferred, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*promise) | Creates a deferred object and a JavaScript promise. |
173| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ResolveDeferred](_j_s_v_m.md#oh_jsvm_resolvedeferred) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Deferred](_j_s_v_m.md#jsvm_deferred) deferred, [JSVM_Value](_j_s_v_m.md#jsvm_value) resolution) | Resolves a JavaScript promise by using the associated deferred object. It can only be used to resolve the JavaScript promise of the corresponding available deferred object. This means that promise must be created using **OH_JSVM_CreatePromise()**, and the object returned from this call must be retained so that it can be passed to this API. |
174| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RejectDeferred](_j_s_v_m.md#oh_jsvm_rejectdeferred) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Deferred](_j_s_v_m.md#jsvm_deferred) deferred, [JSVM_Value](_j_s_v_m.md#jsvm_value) rejection) | Rejects a JavaScript promise by using the associated deferred object. It can only be used to reject the JavaScript promise of the corresponding available deferred object. This means that promise must be created using **OH_JSVM_CreatePromise()**, and the object returned from this call must be retained so that it can be passed to this API. |
175| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsPromise](_j_s_v_m.md#oh_jsvm_ispromise) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isPromise) | Checks whether a promise object is a native promise object. |
176| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_JsonParse](_j_s_v_m.md#oh_jsvm_jsonparse) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsonString, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Parses a JSON string and returns the parsed value. |
177| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_JsonStringify](_j_s_v_m.md#oh_jsvm_jsonstringify) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) jsonObject, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Converts an object into a JSON string and returns the converted string. |
178| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSnapshot](_j_s_v_m.md#oh_jsvm_createsnapshot) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, size_t contextCount, const [JSVM_Env](_j_s_v_m.md#jsvm_env) \*contexts, const char \*\*blobData, size_t \*blobSize) | Creates a VM startup snapshot. |
179| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_GetHeapStatistics](_j_s_v_m.md#oh_jsvm_getheapstatistics) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_HeapStatistics](_j_s_v_m___heap_statistics.md) \*result) | Gets heap statistics of a VM. |
180| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_StartCpuProfiler](_j_s_v_m.md#oh_jsvm_startcpuprofiler) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_CpuProfiler](_j_s_v_m.md#jsvm_cpuprofiler) \*result) | Creates and starts a CPU profiler. |
181| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_StopCpuProfiler](_j_s_v_m.md#oh_jsvm_stopcpuprofiler) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_CpuProfiler](_j_s_v_m.md#jsvm_cpuprofiler) profiler, [JSVM_OutputStream](_j_s_v_m.md#jsvm_outputstream) stream, void \*streamData) | Stops the CPU profiler and outputs the result to a stream. |
182| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_TakeHeapSnapshot](_j_s_v_m.md#oh_jsvm_takeheapsnapshot) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, [JSVM_OutputStream](_j_s_v_m.md#jsvm_outputstream) stream, void \*streamData) | Takes a heap snapshot and outputs it to a stream. |
183| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenInspector](_j_s_v_m.md#oh_jsvm_openinspector) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*host, uint16_t port) | Opens an inspector on the specified host and port for debugging JavaScript code. |
184| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CloseInspector](_j_s_v_m.md#oh_jsvm_closeinspector) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env) | Closes all remaining inspector connections. |
185| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_WaitForDebugger](_j_s_v_m.md#oh_jsvm_waitfordebugger) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, bool breakNextLine) | Waits for the host to set up a socket connection with an inspector. After the connection is set up, the application continues to run. **Runtime.runIfWaitingForDebugger** is sent. |
186| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_DefineClassWithPropertyHandler](_j_s_v_m.md#oh_jsvm_defineclasswithpropertyhandler) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*utf8name, size_t length, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) constructor, size_t propertyCount, const [JSVM_PropertyDescriptor](_j_s_v_m___property_descriptor.md) \*properties, [JSVM_PropertyHandlerCfg](_j_s_v_m.md#jsvm_propertyhandlercfg) propertyHandlerCfg, [JSVM_Callback](_j_s_v_m.md#jsvm_callback) callAsFunctionCallback, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Defines a set of JavaScript class property operations including getter(), setter(), deleter(), and enumerator() with the given class name, constructor, properties, and callback handler, which are called as callbacks. |
187| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsUndefined](_j_s_v_m.md#oh_jsvm_isundefined) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isUndefined) | Checks whether the value passed in is **Undefined**. This API is equivalent to executing JavaScript code **value === undefined**. |
188| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsNull](_j_s_v_m.md#oh_jsvm_isnull) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isNull) | Checks whether the value passed in is a **Null** object. This API is equivalent to executing JavaScript code **value === null**. |
189| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsNullOrUndefined](_j_s_v_m.md#oh_jsvm_isnullorundefined) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isNullOrUndefined) | Checks whether the value passed in is **Null** or **Undefined**. This API is equivalent to executing JavaScript code **value == null**. |
190| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsBoolean](_j_s_v_m.md#oh_jsvm_isboolean) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isBoolean) | Checks whether the value passed in is a Boolean value. This API is equivalent to executing JavaScript code **typeof value === 'boolean'**. |
191| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsNumber](_j_s_v_m.md#oh_jsvm_isnumber) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isNumber) | Checks whether the value passed in is a number. This API is equivalent to executing JavaScript code **typeof value === 'number'**. |
192| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsString](_j_s_v_m.md#oh_jsvm_isstring) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isString) | Checks whether the value passed in is a string. This API is equivalent to executing JavaScript code **typeof value === 'string'**. |
193| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsSymbol](_j_s_v_m.md#oh_jsvm_issymbol) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isSymbol) | Checks whether the value passed in is a symbol. This API is equivalent to executing JavaScript code **typeof value === 'symbol'**. |
194| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsFunction](_j_s_v_m.md#oh_jsvm_isfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isFunction) | Checks whether the value passed in is a function. This API is equivalent to executing JavaScript code **typeof value === 'function'**. |
195| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsObject](_j_s_v_m.md#oh_jsvm_isobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isObject) | Checks whether the value passed in is an object. |
196| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsBigInt](_j_s_v_m.md#oh_jsvm_isbigint) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isBigInt) | Checks whether the value passed in is a BigInt. This API is equivalent to executing JS code **typeof value === 'bigint'**. |
197| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_CreateMap](_j_s_v_m.md#oh_jsvm_createmap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Returns the JavaScript value corresponding to the JavaScript Map type. |
198| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_IsMap](_j_s_v_m.md#oh_jsvm_ismap) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isMap) | Checks whether the value passed in is a map. |
199| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_IsConstructor](_j_s_v_m.md#oh_jsvm_isconstructor) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isConstructor) | Checks whether the value passed in is a constructor. |
200| [JSVM_Status](_j_s_v_m.md#jsvm_status) JSVM_CDECL [OH_JSVM_CreateRegExp](_j_s_v_m.md#oh_jsvm_createregexp) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_RegExpFlags](_j_s_v_m.md#jsvm_regexpflags) flags, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Returns the JavaScript value of the regular expression corresponding to the input. An exception may be thrown. |
201| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectGetPrototypeOf](_j_s_v_m.md#oh_jsvm_objectgetprototypeof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Gets the prototype of a JavaScript object. |
202| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ObjectSetPrototypeOf](_j_s_v_m.md#oh_jsvm_objectsetprototypeof) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) object, [JSVM_Value](_j_s_v_m.md#jsvm_value) prototype) | Sets the prototype of a JavaScript object. |
203| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateSet](_j_s_v_m.md#oh_jsvm_createset) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a JavaScript Set object. |
204| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsSet](_j_s_v_m.md#oh_jsvm_isset) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*isSet) | Checks whether the specified object is of the Set type. |
205| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CoerceToBigInt](_j_s_v_m.md#oh_jsvm_coercetobigint) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Implements the abstract operation ToBigInt(). |
206| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsRegExp](_j_s_v_m.md#oh_jsvm_isregexp) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Checks whether the value passed in is a JavaScript RegExp object. |
207| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateFunctionWithScript](_j_s_v_m.md#oh_jsvm_createfunctionwithscript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const char \*funcName, size_t length, size_t argc, const [JSVM_Value](_j_s_v_m.md#jsvm_value) \*argv, [JSVM_Value](_j_s_v_m.md#jsvm_value) script, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*result) | Creates a function with the given JavaScript as the function body. |
208| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_PumpMessageLoop](_j_s_v_m.md#oh_jsvm_pumpmessageloop) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm, bool \*result) | Starts the running of the task queue in the VM. The task queue can be executed through an external event loop. |
209| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_PerformMicrotaskCheckpoint](_j_s_v_m.md#oh_jsvm_performmicrotaskcheckpoint) ([JSVM_VM](_j_s_v_m.md#jsvm_vm) vm) | Checks whether there are micro tasks waiting in the queue. If yes, execute them. |
210| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_RetainScript](_j_s_v_m.md#oh_jsvm_retainscript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script) | Retains a JSVM_Script and extends its lifecycle beyond the current scope. |
211| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReleaseScript](_j_s_v_m.md#oh_jsvm_releasescript) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Script](_j_s_v_m.md#jsvm_script) script) | Releases the script retained by **OH_JSVM_RetainScript**. The released script cannot be used again. |
212| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_OpenInspectorWithName](_j_s_v_m.md#oh_jsvm_openinspectorwithname) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, int pid, const char \*name) | Opens an inspector with the specified **name**, in order to open the UNIX domain port corresponding to the PID. |
213| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileWasmModule](_j_s_v_m.md#oh_jsvm_compilewasmmodule) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const uint8_t \*wasmBytecode, size_t wasmBytecodeLength, const uint8_t \*cacheData, size_t cacheDataLength, bool \*cacheRejected, [JSVM_Value](_j_s_v_m.md#jsvm_value) \*wasmModule) | Compiles WebAssembly bytecode to get a WebAssembly module. If the WebAssembly cache is provided, it will be deserialized first. |
214| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CompileWasmFunction](_j_s_v_m.md#oh_jsvm_compilewasmfunction) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) wasmModule, uint32_t functionIndex, [JSVM_WasmOptLevel](_j_s_v_m.md#jsvm_wasmoptlevel) optLevel) | Compiles the function with the specified index in the WebAssembly module at a specified optimization level. |
215| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_IsWasmModuleObject](_j_s_v_m.md#oh_jsvm_iswasmmoduleobject) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) value, bool \*result) | Checks whether the given JSVM_Value is a WebAssembly module. |
216| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_CreateWasmCache](_j_s_v_m.md#oh_jsvm_createwasmcache) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, [JSVM_Value](_j_s_v_m.md#jsvm_value) wasmModule, const uint8_t \*\*data, size_t \*length) | Creates a WebAssembly cache. |
217| JSVM_EXTERN [JSVM_Status](_j_s_v_m.md#jsvm_status) [OH_JSVM_ReleaseCache](_j_s_v_m.md#oh_jsvm_releasecache) ([JSVM_Env](_j_s_v_m.md#jsvm_env) env, const uint8_t \*cacheData, [JSVM_CacheType](_j_s_v_m.md#jsvm_cachetype) cacheType) | Releases the cache of a specified type. |
218