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